Подтвердить что ты не робот

Есть ли в Java многоуровневая структура данных, подобная C++ STL?

Мне нужна структура данных, которая работает как мультимножество STL, но TreeSet в Java не допускает дублирования элементов. Есть ли какая-либо встроенная структура данных в Java, которая эквивалентна мультимножеству?

4b9b3361

Ответ 1

В стандартных библиотеках Java нет Multiset. Вы должны использовать инфраструктуру Google Guava, которая содержит классы Multiset. См.

Ответ 2

Использование Map<E, Integer>, где Integer - это счет, является хорошей заменой для Multiset, и ему также не нужна сторонняя библиотека.

Обновление: Если вы действительно хотите сохранить объект дважды, используйте Список с такой картой, как Map<E, List<E>>.

Ответ 3

Алгоритмы 4-го издания имеют Bag которые доступны на веб-сайте книги. Вы также можете просмотреть javadoc в Интернете.

Класс Bag представляет собой сумку (или мультимножество) общих элементов. Он поддерживает вставку и повторение элементов в произвольном порядке.

Вероятно, вы просто захотите посмотреть исходный код, если Bag - это все, что вам нужно, но в algs4.jar есть много других интересных вещей, поэтому стоит посмотреть.

Ответ 5

TreeSet<Integer> set = new TreeSet<>();
TreeSet<Integer> multiset = new TreeSet<>((i, j) -> i < j ? 1 : -1);

Сделать набор мультимножеств, просто сделав 1!= 1!

Ответ 6

Вы можете использовать PriorityQueue. Элементы сортируются в их естественном порядке, или, если вы их предоставили, компаратором, допускаются дубликаты.