Как создать таблицу поиска с одним ключом и 4 значениями? - PullRequest
1 голос
/ 07 июня 2019

Мне удается создать таблицу поиска с 1 ключом и 2 значениями:

public static Map<String, Map.Entry<String, String>> myMap;
myMap= new HashMap<String, Map.Entry<String, String>>();

myMap.put("key 1", new AbstractMap.SimpleEntry<String, String>(" value 1.1", "value 1.2"));
myMap.put("key 2", new AbstractMap.SimpleEntry<String, String>(" value 2.1", "value 2.2"));
// and so on...

// retrieve the key, values
Map.Entry<String, String> pair;
for (String key : myMap.keySet() ) {
            pair = oidMap.get(key);
            value1= pair.getKey();
            value2= pair.getValue();
            ///use the key, value1, value2 as needed
}

Но когда я попытался расширить это до 4 значений, я получил кучу ошибок, которые я выяснил, что Вход ограничен только 2 значениями!

public static Map<String, Map.Entry<String, String, Float, String>> myMap;
myMap= new HashMap<String, Map.Entry<String, String, Float, String>>(); 

Итак, пожалуйста, как сделать что-то похожее на 1 ключ и 4 значения? Я не могу расширить это, объявив внутренний map.entry для второго аргумента первой карты. Entry, потому что в этой точке первая строка больше не является уникальной, я имею в виду, что все аргументы Map.Entry> могут повторяться, ни один не может быть используется в качестве ключа.

И вам, ребята, не нужно идти по пути, который я выбрал. Вы можете предоставить любое решение / структуру данных, которая позволит мне хранить и извлекать 3 значения в виде строк и одно значение с плавающей запятой, все из которых связаны с ключом в виде строки.

С наилучшими пожеланиями,

1 Ответ

5 голосов
/ 07 июня 2019

Java не имеет встроенных кортежей, хотя такие типы довольно просты в реализации и, например, для Spark, имеют до десяти значений.

Вы можете создать свой собственный класс, содержащий значения. Если в вашей программе не так много комбинаций, лучше всего подойдет простой класс с фиксированными полями, так как он позволит также давать имена вашим полям, предоставляя документацию по их назначению.

Если ваша комбинация полей и типов должна быть более динамичной, просто создайте универсальный класс с четырьмя различными типами, аналогично тому, как это делается в Map.Entry.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...