#java #programming-languages #solr #types
#java #программирование-языки #solr #типы
Вопрос:
существует ли тип для хранения значения
<string,string,int>
если я использую Namedlist (Solr), Перечислите, это может быть достигнуто? если да, то как использовать.
Есть какой-нибудь другой способ?
пример:
<"A",America,code>
<"B",London,code>
Мне нужно это в java
ЗАРАНЕЕ СПАСИБО
Комментарии:
1. Нет, но вы могли бы написать это самостоятельно.
Ответ №1:
Почему бы вам не создать класс, состоящий из этих типов данных.
Пример:
class MyObject
{
int code;
String country;
String Flag;
// Getters and Setters goes here.
}
Теперь мы можем использовать этот класс в виде списка.
List<MyObject> list;
Комментарии:
1. Еще лучше — предоставьте конструктор, который задает типы данных (вместо установщиков) и создает их
final
. Почти нет причин делать такой маленький объект изменяемым.2. можете ли вы сказать, как это сделать .. извините.. я новичок в этом .. пожалуйста, предоставьте примерный пример… Спасибо за все
3.
class MyObject { final int code; final String country; final String Flag; public MyObject(int code, String country, String flag){ this.code = code; this.country = country; this.Flag = flag; } }
Ответ №2:
public class Triple<T1, T2, T3> {
private T1 o1;
private T2 o2;
private T3 o3;
public Triple(T1 o1, T2 o2, T3 o3) {
this.o1 = o1;
this.o2 = o2;
this.o3 = o3;
}
public void setO1(T1 o1) {
this.o1 = o1;
}
public T1 getO1() {
return o1;
}
public void setO2(T2 o2) {
this.o2 = o2;
}
public T2 getO2() {
return o2;
}
public void setO3(T3 o3) {
this.o3 = o3;
}
public T3 getO3() {
return o3;
}
}
Пример:
List<Triple<String, Integer, String>> list
= new ArrayList<Triple<String, Integer, String>>();
list.add(new Triple("tr1", 1, "Triple 1"));
list.add(new Triple("tr2", 2, "Triple 2"));
list.add(new Triple("tr3", 3, "Triple 3"));
Ответ №3:
ИМХО, это зависит от того, как вы будете это использовать. Например, если вы всегда будете искать код, когда у вас есть country flag (и наоборот), имеет смысл сгруппировать county flag:
Map<Map<String,String>,Integer> myMap...
Ответ №4:
Я бы написал это так:
public class App {
public static void main(String[] args) {
Map<String, Location> map = new HashMap<String, Location>();
map.put("B", City.London);
}
}
enum City implements Location {
London(262);
private int code;
private City(int code) {
this.code = code;
}
@Override
public int getCode() {
return code;
}
}
interface Location {
int getCode();
}
Это позволяет выполнять поиск по первичному ключу. И делает константу, подобную коду, связанному с константой местоположения. Охватывающий интерфейс позволит помещать туда разные константы / объекты enum.
Комментарии:
1. Зачем вам
@Override
getCode(), это всего лишь реализация интерфейса?2. Если кто-то удалит этот метод из интерфейса, я получу ошибку компиляции и рассмотрю возможность удаления его из моей реализации.