Подтвердить что ты не робот

Эквивалент std::vector в Java?

Что будет самым близким к std::vector в Java? Под этим я подразумеваю класс, который может принимать T в его конструктор, а затем pushBack, popBack() и который хранится в непрерывной памяти (не связанный список).

Спасибо

4b9b3361

Ответ 2

Это может быть ArrayDeque, если вам нужны функции стека.

Не используйте класс Stack, как здесь предлагают другие.

Ответ 3

Является ли ArrayList тем, что вы ищете?

ArrayList l = new ArrayList<String>();
Таким образом, вы можете иметь список чего-нибудь (определенного между < > ).

Ответ 4

Вероятно, вы ищете ArrayDeque, который эффективно поддерживает доступ в стиле push/pop с обоих концов списка.

Избегайте Stack и Vector - они синхронизированы, что подразумевает, как правило, бессмысленные служебные данные.

ArrayList также прекрасен; однако вам нужно будет реализовать свой собственный (тривиальный) метод pop, поскольку он не предоставляется самим классом. ArrayList разрешает индексированный доступ, который ArrayDeque отсутствует.

Ответ 5

Вы можете использовать ArrayDeque, он не поддерживает произвольный доступ, но поддерживает методы Deque (двойной конец очереди)

Ответ 6

Я думаю, что это LinkedList

vector (c++)   <===========> linkedlist(java) 
v.front()      <===========> l.peekFirst() 
v.back()       <===========> l.peekLast()  
v.push_back(x) <===========> l.add(x) 
v.pop_back()   <===========> l.pollLast() 

Ответ 9

То, что вам нужно, это именно java.util.ArrayList<T> Вы можете проверить документацию в http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html

В основном это List, реализованный с массивом, где ссылки живут в непрерывном блоке памяти.

Я рекомендую использовать в комбинации с переменной интерфейса следующим образом: List<String> stringList = new ArrayList<String>(); поэтому, если вы решите, вы можете изменить реализацию на java.util.LinkedList<T> или на другую.