Какая реализация коллекций подойдет для больших объемов?
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Какая реализация коллекций подойдет для... Expand / Collapse
Автор
Сообщение
12.09.2006 13:21
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 28.12.2006 0:42
Сообщ.: 20, Visits: 79
Добрый день!
В коллекциях планируется хранить длинные последовательности числовых ключей. Потом мерджить их, интерсептить с друг другом и т.д., т.к. активно работать с ними.
При этом многие из этих последовательностей могут быть и довольно маленькими.
Какой класс для этого лучше подойдет? Может ArrayList, т.к. в нем вообще не нужно заботиться capacity, и оно там не перевыделяется при превышении размера..?
Сообщ. #904244
12.09.2006 15:43
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 23.05.2007 20:20
Сообщ.: 662, Visits: 5 795
1. ArrayList -- динамический массив. Другими словами, он расширяется, если есть необходимость. Можно не заботиться о начальном размере, когда создаешь объект ArrayList. Но, если примерно размер известен, то лучше создать сразу нужного размера. Ничего страшного если ошибешься немного =))

2. О чем речь? Просто о коллекции целых чисел? Порядок имеет значение? Сортировка имеет значение? Уникальность имеет значение? От от ветов на эти вопросы зависит ответ на вопрос "какая коллекция подойдет".

Не стесняйся, спрашивай. Про коллекции все расскажем =)) Гарантировано.
Сообщ. #904258
12.09.2006 18:49
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 28.12.2006 0:42
Сообщ.: 20, Visits: 79
Danissimo (12.09.2006)

2. О чем речь? Просто о коллекции целых чисел? Порядок имеет значение? Сортировка имеет значение? Уникальность имеет значение? От от ветов на эти вопросы зависит ответ на вопрос "какая коллекция подойдет".
Не стесняйся, спрашивай. Про коллекции все расскажем =)) Гарантировано.


О коллекциях последовательностей целых чисел, которые только единожды заполняются, а потом merge-утся, интерсептятся, т.е. подвергаются такого рода операциям. В результате этих операций - получаются, создаются новые коллекции, но первоначальные сами по себе не меняются. Т.е. элементы в(из) них вообще не добавляются и не удаляются.
Сообщ. #904288
12.09.2006 19:41
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 23.05.2007 20:20
Сообщ.: 662, Visits: 5 795
Из 5 вопросов ты ответил только на 2.

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

c1 = (1 2 3)
c2 = (3 4 5)

Сколько троек будет содержать результирующая коллекция?

Ответь на ВСЕ вопросы. Поверь, я их не спроста задаю.
Сообщ. #904297
12.09.2006 20:01
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 28.12.2006 0:42
Сообщ.: 20, Visits: 79
Danissimo (12.09.2006)

Сколько троек будет содержать результирующая коллекция?
Ответь на ВСЕ вопросы. Поверь, я их не спроста задаю.

Ок-ок.
Дублирующие элементы не нужны. Т.е. 1 тройка.

Danissimo (12.09.2006)
2. О чем речь? Просто о коллекции целых чисел? Порядок имеет значение? Сортировка имеет значение? Уникальность имеет значение?

Коллекции целых чисел (т.ч. первичные ключи БД)
Порядок значения не имеет.
Сортировка не имеет значения.
Уникальность - вот да, имеет значение.
;)
Сообщ. #904298
12.09.2006 20:12
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 23.05.2007 20:20
Сообщ.: 662, Visits: 5 795
Хе-хе. Тогда забудь про ArrayList. Тебе нужен HashSet. Тем более, что с ним операции merge и intersect реализуются в одну-две строчки. И ооооооооооочень быстро =)
Сообщ. #904299
12.09.2006 20:18
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 23.05.2007 20:20
Сообщ.: 662, Visits: 5 795
Правда, должен тебя серьезно огорчить. Все будет очень быстро работать жо тех пор, пока не придет Garbage Collector. Дело в том, что в Java нету эффективной коллекции, чтобы манипулировать примитивными типами. Мы выкрутились из этой ситуации, написав свой, скажем, HashSet, но хранящий целые 64-разрядные числа. Работает в 4 (!) раза быстее, чем HashSet.

Рекомендую начать с HashSet. А уже потом, по мере необходимости, написать свою HashSet для long.
Сообщ. #904300
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, mishgun, pl

Время GMT +3:00, Сейчас 7:35