Хэш-карта с несколькими значениями [дубликат]
На этот вопрос уже есть ответ здесь:
Я хочу реализовать хэш-таблицу с несколькими значениями в java i. e
// if sample is a hashmap
sample.put(1,1);
sample.put(1,2);
И sample.get(1);
вернут 2 значения.
Как я могу этого достичь?
3 ответа:
Вместо этого можно использовать Multimap. Он сохраняет несколько значений для ключа в списке. Существуют реализации в commons-коллекциях и в Guava.
Multimap<String, String> multimap = ArrayListMultimap.create(); multimap.put("ducks", "Huey"); multimap.put("ducks", "Dewey"); multimap.put("ducks", "Louie"); Collection<String> ducks = multimap.get("ducks"); System.out.println(ducks); // [Huey, Dewey, Louie]
Это похоже на использование хэш-карты, где значения являются списками, но вам не нужно явно создавать списки.
Тот же пример, выполненный способом do-it-yourself, выглядит следующим образом:
Обратите внимание, что вы можете использовать Multimap в качестве компоновщика и вызвать asMap для возврата карты.Map<String, List<String>> map = new HashMap<>(); map.put("ducks", new ArrayList<String>()); map.get("ducks").add("Huey"); map.get("ducks").add("Dewey"); map.get("ducks").add("Louie"); // or as an alternative to the prev 4 lines: // map.put("ducks", new ArrayList<String>( // new String[] {"Huey", "Dewey", "Louie"})); Collection<String> ducks = map.get("ducks"); System.out.println(ducks); // [Huey, Dewey, Louie]
Попробуйте
HashMap<Key, List<Value>>
вам нужно будет управлять списком, создавая, если он еще не существует, и добавляя к нему, если вам нужно.Гуава также обеспечивает реализацию Multimap
Сделайте это так
Map<String, List> map = new HashMap<String, List>(); List listOne = new ArrayList(); for(int i=0;i<4;i++){ listOne.add(i); } List listTwo = new ArrayList(); for(int i=4;i<6;i++){ listTwo.add(i); } map.put("listOne",listOne); map.put("listTwo",listTwo);
Или вы можете даже использовать Multimap гуавы