Порядок Java ArrayLists и относительные преимущества ArrayLists по сравнению с векторами - PullRequest
1 голос
/ 13 сентября 2011

Если вы добавляете элементы в список массивов, один за другим, например:

 ArrayList alist = new ArrayList();
 alist.add("A");
 alist.add("B");
 alist.add("C");
 alist.add("D");

А потом, скажем, третий элемент, скажем, alist.get (2), я гарантированно получу третий добавленный элемент?

Вторая часть вопроса, если предположить, что ответ на первый вопрос - да: когда я буду использовать ArrayList вместо Vector и наоборот.

Ответы [ 4 ]

6 голосов
/ 13 сентября 2011

"Гарантированный"? Трудно ответить из-за ответа на вторую часть вопроса.

ArrayList не синхронизируется по умолчанию; Вектор есть.

Так что, если вы работаете с многопоточным приложением, ваш ArrayList является общим и доступным для записи состоянием, и вы не синхронизировались должным образом, вы можете обнаружить, что гарантия не такая надежная.

Если вы работаете в одном потоке, код, который вы написали, вернул бы "C".

Вы все равно должны предпочесть ArrayList, потому что синхронизация стоит дорого, и вы не всегда хотите платить цену.

0 голосов
/ 13 сентября 2011

Ответ на первую часть вашего вопроса: да, вы получите «C».

вам следует использовать ArrayList, когда один поток обрабатывает (добавляет / удаляет) ArrayList.Если два или более потока манипулируют (добавляют / удаляют), вам нужно использовать Vector, так как Vector безопасен для потоков, надеюсь, это поможет

0 голосов
/ 13 сентября 2011

Да, элементы гарантированно будут проиндексированы в порядке их добавления (во многом как примитивный массив).

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

0 голосов
/ 13 сентября 2011

Да, вы гарантированно получите третий добавленный элемент.

Если вы работаете только с однопоточным кодом, используйте ArrayList. Если вам нужно убедиться, что список является потокобезопасным, используйте Vector.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...