Что будет самым близким к std::vector в Java? Под этим я подразумеваю класс, который может принимать T в его конструктор, а затем pushBack, popBack() и который хранится в непрерывной памяти (не связанный список).
Спасибо
Что будет самым близким к std::vector в Java? Под этим я подразумеваю класс, который может принимать T в его конструктор, а затем pushBack, popBack() и который хранится в непрерывной памяти (не связанный список).
Спасибо
ArrayList
Все хранится в массиве ( "непрерывная память" ) внутри, хотя имена операций немного разные.
Немного больше о реализациях списков в Java
И о дженериках
изменить
Помощник также упомянул полезный класс в своем ответе (хотя и не совсем эквивалентен С++ Vector).
Это может быть ArrayDeque, если вам нужны функции стека.
Не используйте класс Stack, как здесь предлагают другие.
Является ли ArrayList тем, что вы ищете? ArrayList l = new ArrayList<String>();
Таким образом, вы можете иметь список чего-нибудь (определенного между < > ).
Вероятно, вы ищете ArrayDeque, который эффективно поддерживает доступ в стиле push/pop с обоих концов списка.
Избегайте Stack и Vector - они синхронизированы, что подразумевает, как правило, бессмысленные служебные данные.
ArrayList также прекрасен; однако вам нужно будет реализовать свой собственный (тривиальный) метод pop, поскольку он не предоставляется самим классом. ArrayList разрешает индексированный доступ, который ArrayDeque отсутствует.
Вы можете использовать ArrayDeque, он не поддерживает произвольный доступ, но поддерживает методы Deque (двойной конец очереди)
Я думаю, что это 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()
Java имеет стек, который поддерживает push и pop. (http://download.oracle.com/javase/6/docs/api/java/util/Stack.html)
Как насчет просто класса Vector?
http://download-llnw.oracle.com/javase/6/docs/api/java/util/Vector.html
То, что вам нужно, это именно 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> или на другую.