Мне нужно создать большой список из n элементов (может быть до 100 000). каждый элемент в списке является целым числом, эквивалентным индексу списка. После этого я должен вызвать Collections.shuffle в этом списке. Мой вопрос заключается в том, какая реализация списка (либо коллекции java, либо коллекции apache). Мое чувство кишки - ArrayList, которое можно использовать здесь. Все мысли оценены. Спасибо!Какая лучшая реализация списка для больших списков в java
Спасибо за входные данные. Я думаю, что я придерживаюсь ArrayList. В настоящее время я использую конструктор ArrayList с параметром initialCapacity и передаю размер списка. Поэтому, если исходный список равен 100000, я создаю этот новый список с новым ArrayList (100000); Поэтому я думаю, что у меня нет создания массива и сделать asList, так как не будет никакого изменения размера. Кроме того, большинство списков коллекций apache, таких как GrowthList & LazyList не реализует RandomAccess. Это наверняка замедлило бы тасование (согласно javadocs). FastArrayList реализует RandomAccess, но apache имеет примечание для этого класса, говорящее: «Этот класс не является межплатформенным. Использование его может вызвать непредвиденные сбои на некоторых архитектурах».
Не могли бы вы сформулировать цель, которую хотите достичь? – rsp
Что вы делаете со списком после добавления и перетасовки? Вы добавляете/удаляете элементы посередине? Вы добавляете/удаляете элементы в конце? Получаете ли вы элементы в середине в произвольном порядке, или вы делаете один проход с одного конца на другой? Это очень трудно решить, не зная, что это такое, что вы собираетесь с ним делать. Если все, что вы хотите сделать, это добавить числа поочередно и перетасовать, я бы сказал, что ArrayList - это ответ. – MAK
100000 не так много в наши дни. Выполнение этого наивным способом с помощью списка массивов занимает менее 100 мс на моей машине (одноядерное ядро Intel Core2 T5600 @ 1,83 ГГц). – starblue