Какой самый простой и изящный способ реализовать решение указанной ниже проблемы

Мне были предоставлены данные для разных автомобилей (Год, Модель) в виде Автомобиля, рассмотрим 2 потока данных, поступающих в мою систему.

Входные данные:

(«2018», «i20») («2018», «дзен») («2016», «альт») («2015», «k10») («2014», «эртига») («2016», «i20»)

Мне нужно добиться того, чтобы, когда пользователь вводил действительный ключ, например «2018» в качестве ключевого слова для поиска, он должен отображать все связанные модели автомобилей в отсортированном порядке для этого ключа.

например, в этом случае вывод для «2018» должен быть: [i20, zen]

Я знаю, что в java hashmap не может быть дублирующихся ключей, и также провел некоторые исследования, что это можно реализовать с помощью MultiMap, но я бы очень признателен за некоторые выводы здесь.

что ты уже испробовал?

Mark 06.12.2018 10:57

«это можно реализовать с помощью MultiMap» Да, конечно, можно. Используй это.

Michael 06.12.2018 10:58

Это также можно реализовать, просто создав ArrayList<Car>, который допускает дублирование.

Mark 06.12.2018 10:59

Возможный дубликат Сгруппировать список объектов по атрибуту: Java

LuCio 06.12.2018 11:05

Без использования каких-либо библиотек HashMap идеально подходит для этой проблемы. Я думаю, если вы потратите некоторое время на изучение того, как работает интерфейс карты, вы найдете хорошее решение.

Mark 06.12.2018 11:05
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
5
63
3

Ответы 3

Поместите значения в 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) для простейшего решения требуется сторонняя библиотека? В самом деле?

Sharon Ben Asher 06.12.2018 11:07

@SharonBenAsher Согласен. Обновил свой ответ. Спасибо.

Aditya Narayan Dixit 06.12.2018 11:18

Вы можете поместить значения в Map<String, Set<TreeSet>> Где TreeSet хранит ваши ценности отсортированными

Другие вопросы по теме