|
|
|
Junior Member
      
участник
Last Login: 28.12.2006 0:42
Сообщ.: 20,
Visits: 79
|
|
Добрый день!
В коллекциях планируется хранить длинные последовательности числовых ключей. Потом мерджить их, интерсептить с друг другом и т.д., т.к. активно работать с ними.
При этом многие из этих последовательностей могут быть и довольно маленькими.
Какой класс для этого лучше подойдет? Может ArrayList, т.к. в нем вообще не нужно заботиться capacity, и оно там не перевыделяется при превышении размера..?
|
|
|
|
|
Supreme Being
      
участник
Last Login: 23.05.2007 20:20
Сообщ.: 662,
Visits: 5 795
|
|
1. ArrayList -- динамический массив. Другими словами, он расширяется, если есть необходимость. Можно не заботиться о начальном размере, когда создаешь объект ArrayList. Но, если примерно размер известен, то лучше создать сразу нужного размера. Ничего страшного если ошибешься немного =))
2. О чем речь? Просто о коллекции целых чисел? Порядок имеет значение? Сортировка имеет значение? Уникальность имеет значение? От от ветов на эти вопросы зависит ответ на вопрос "какая коллекция подойдет".
Не стесняйся, спрашивай. Про коллекции все расскажем =)) Гарантировано.
|
|
|
|
|
Junior Member
      
участник
Last Login: 28.12.2006 0:42
Сообщ.: 20,
Visits: 79
|
|
Danissimo (12.09.2006)
2. О чем речь? Просто о коллекции целых чисел? Порядок имеет значение? Сортировка имеет значение? Уникальность имеет значение? От от ветов на эти вопросы зависит ответ на вопрос "какая коллекция подойдет".
Не стесняйся, спрашивай. Про коллекции все расскажем =)) Гарантировано.
О коллекциях последовательностей целых чисел, которые только единожды заполняются, а потом merge-утся, интерсептятся, т.е. подвергаются такого рода операциям. В результате этих операций - получаются, создаются новые коллекции, но первоначальные сами по себе не меняются. Т.е. элементы в(из) них вообще не добавляются и не удаляются.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 23.05.2007 20:20
Сообщ.: 662,
Visits: 5 795
|
|
Из 5 вопросов ты ответил только на 2.
Ок, пусть даны две коллекции, содержащие целые числа. Пусть в результате объединения появляется новая коллекция. Пусть элементы в каждой из первоначальных коолекций уникальны. Но, сещесвуют значения присутствующие в обоих коллекциях. Например,
c1 = (1 2 3)
c2 = (3 4 5)
Сколько троек будет содержать результирующая коллекция?
Ответь на ВСЕ вопросы. Поверь, я их не спроста задаю.
|
|
|
|
|
Junior Member
      
участник
Last Login: 28.12.2006 0:42
Сообщ.: 20,
Visits: 79
|
|
Danissimo (12.09.2006)
Сколько троек будет содержать результирующая коллекция?
Ответь на ВСЕ вопросы. Поверь, я их не спроста задаю.
Ок-ок.
Дублирующие элементы не нужны. Т.е. 1 тройка.
Danissimo (12.09.2006) 2. О чем речь? Просто о коллекции целых чисел? Порядок имеет значение? Сортировка имеет значение? Уникальность имеет значение?
Коллекции целых чисел (т.ч. первичные ключи БД)
Порядок значения не имеет.
Сортировка не имеет значения.
Уникальность - вот да, имеет значение.
;)
|
|
|
|
|
Supreme Being
      
участник
Last Login: 23.05.2007 20:20
Сообщ.: 662,
Visits: 5 795
|
|
| Хе-хе. Тогда забудь про ArrayList. Тебе нужен HashSet. Тем более, что с ним операции merge и intersect реализуются в одну-две строчки. И ооооооооооочень быстро =)
|
|
|
|
|
Supreme Being
      
участник
Last Login: 23.05.2007 20:20
Сообщ.: 662,
Visits: 5 795
|
|
Правда, должен тебя серьезно огорчить. Все будет очень быстро работать жо тех пор, пока не придет Garbage Collector. Дело в том, что в Java нету эффективной коллекции, чтобы манипулировать примитивными типами. Мы выкрутились из этой ситуации, написав свой, скажем, HashSet, но хранящий целые 64-разрядные числа. Работает в 4 (!) раза быстее, чем HashSet.
Рекомендую начать с HashSet. А уже потом, по мере необходимости, написать свою HashSet для long.
|
|
|
|