Как сохранить эти значения

#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. Если кто-то удалит этот метод из интерфейса, я получу ошибку компиляции и рассмотрю возможность удаления его из моей реализации.