LINUX.ORG.RU

Java datastructures

 , ,


1

0

Интересно, почему в java нет такой очевидной и часто нужной структуры данных как упорядоченная коллекция ключ-значение с поддержкой дубликатов ключей.

Или оно все же есть в стандартной библиотеке, а я ее не заметил?

★★★★
Ответ на: комментарий от unt1tled

Обычный датамайнинг, а жаба так нелепо сливает

Обычный датамайнинг нужно делать в БД. А сейчас самый писк делать датамайнинг через map-reduce, а не втупую в лоб.

Karapuz ★★★★★
()

Ещё один студентик не нашёл в стандартной библиотеке нужной структуры/алгоритма для своей лабораторной.

anonymous
()
Ответ на: комментарий от unt1tled

надо создавать отдельную мапу, тоесть дублировать память. Адъ. Про in place сортировку они не слышали?

И каким образом ты сделаешь in-place сортировку map'a?

anonymous
()

Чем не устраивает SortedTree<Pair<Name, Age>>?

anonymous
()
Ответ на: комментарий от Gorthauer

Ключу соответствует несколько значений, они должны быть упорядочены

Как ты можешь упорядочить значения если у них ключи одинаковы?

подозреваю, что вставка в этот массив должна быть за log n, а не за n log n.

Подозреваю, что выбирать метод нужно исходя из допустимого оверхеда по памяти или ты собрался вставкой квиксорт обогнать?

ya-betmen ★★★★★
()
Ответ на: комментарий от ya-betmen

В качестве значения использовать множество, в которое вставка за логарифм. Итого общая сложность вставки также остается логарифмической. И таки да, эта вставка обгоняет кусорт. (log n vs n log n).

Если данных много, то сложность важнее, чем небольшой оверхед по памяти. Допустим, что n у нас 1024, тогда алгоритм вставки за n log n справится с задачей за 10240 операций, а со сложностью log n всего за 10. Думаю выигрыш очевиден, даже если второй алгоритм и будет жрать в 2 раза больше памяти.

Gorthauer ★★★★★
()
Ответ на: комментарий от Gorthauer

В качестве значения использовать множество, в которое вставка за логарифм. Итого общая сложность вставки также остается логарифмической.

Не останется, т.к. тебе нужно вставить n значений, т.е. в любом случае эта сложность не может быть меньше n. А если чуть-чуть напрячь мозг, то станет ясно, что она будет n log n

И таки да, эта вставка обгоняет кусорт. (log n vs n log n).

новый метод сортировки при помощи вставки в TreeSet, обгоняющий по скорости все остальные сортировки, предложи в stdlib cpp добавить соответствующую функцию.

maloi ★★★★★
()
Ответ на: комментарий от Gorthauer

В качестве значения использовать множество, в которое вставка за логарифм. Итого общая сложность вставки также остается логарифмической.

Общая сложность для вставки у тебя всё равно станет n log n на n элементах. Итого у тебя или стабильный n log n или в среднем n log n.

Ну или поясни своё сортировочное чудо.

ya-betmen ★★★★★
()

Очевидно, что если делать все возможные комбинации всех стандартных коллекций (т.к. они, естественно, часто нужны), то стандартная библиотека распухнет неимоверно. Поэтому если уж тебе нужна такая коллекция - комбинируй необходимые простые коллекции сам.

maloi ★★★★★
()

Нет, потому что не сделали. К счастью есть практически общепринятые сторонние библиотеки, дополняющие стандартную, поэтому проблемой это не является.

Legioner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.