Мне были предоставлены данные для разных автомобилей (Год, Модель) в виде Автомобиля, рассмотрим 2 потока данных, поступающих в мою систему.
Входные данные:
(«2018», «i20») («2018», «дзен») («2016», «альт») («2015», «k10») («2014», «эртига») («2016», «i20»)
Мне нужно добиться того, чтобы, когда пользователь вводил действительный ключ, например «2018» в качестве ключевого слова для поиска, он должен отображать все связанные модели автомобилей в отсортированном порядке для этого ключа.
например, в этом случае вывод для «2018» должен быть: [i20, zen]
Я знаю, что в java hashmap не может быть дублирующихся ключей, и также провел некоторые исследования, что это можно реализовать с помощью MultiMap, но я бы очень признателен за некоторые выводы здесь.
«это можно реализовать с помощью MultiMap» Да, конечно, можно. Используй это.
Это также можно реализовать, просто создав ArrayList<Car>, который допускает дублирование.
Возможный дубликат Сгруппировать список объектов по атрибуту: Java
Без использования каких-либо библиотек HashMap идеально подходит для этой проблемы. Я думаю, если вы потратите некоторое время на изучение того, как работает интерфейс карты, вы найдете хорошее решение.




Поместите значения в Map<String, List<String>> и получите список с помощью get(String key)
Да, это можно реализовать с помощью com.google.common.collect.Multimap. Попробуйте ниже:
Multimap<String, String> cars = ArrayListMultimap.create();
cars.put("2018", "i20");
cars.put("2018", "zen");
cars.put("2016", "alto");
cars.put("2015", "k10");
cars.put("2014", "ertiga");
cars.put("2016", "i10");
System.out.println(cars.get("2018"));
Если вы не хотите использовать стороннюю библиотеку, вы можете использовать
Map<String, List<String>>.
1) вам нужно указать, какую стороннюю библиотеку вы используете, и 2) для простейшего решения требуется сторонняя библиотека? В самом деле?
@SharonBenAsher Согласен. Обновил свой ответ. Спасибо.
Вы можете поместить значения в Map<String, Set<TreeSet>>
Где TreeSet хранит ваши ценности отсортированными
что ты уже испробовал?