Вопрос:

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

java data-structures

20976 просмотра

6 ответа

570 Репутация автора

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

Автор: outlaw Источник Размещён: 24.09.2012 01:01

Ответы (6)


12 плюса

258 Репутация автора

Решение

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

Автор: Istvan Neuwirth Размещён: 24.09.2012 01:09

2 плюса

12271 Репутация автора

Коллекции Apache Commons имеют Bagи SortedBagинтерфейсы. Похоже, TreeBagможет удовлетворить ваши потребности, но есть множество реализаций на выбор.

Автор: David Grant Размещён: 24.09.2012 01:12

5 плюса

307512 Репутация автора

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

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

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

Автор: Bill the Lizard Размещён: 02.10.2012 10:47

25 плюса

2209 Репутация автора

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

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

Автор: TheCrazyProgrammer Размещён: 01.12.2013 01:43

-1 плюса

7 Репутация автора

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

Сделайте набор множественным, просто сделав 1! = 1!

Автор: user9231127 Размещён: 17.01.2018 06:15

1 плюс

332 Репутация автора

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

Автор: DaveB Размещён: 13.10.2018 02:44
Вопросы из категории :
32x32