Java中与std :: vector最接近的是什么?我的意思是,这个类可以将T引入其构造函数,然后是pushBack,popBack(),并存储在连续内存(不是链表)中。
由于
答案 0 :(得分:36)
ArrayList
一切都存储在数组(“连续内存”)内部,虽然操作名称有点不同。
A bit more about list implementations in Java
And about generics
修改强>
帮助方法在他的回答中也提到了有用的类(虽然不完全等同于C ++ Vector)。
答案 1 :(得分:8)
如果你需要Stack功能,那可能是ArrayDeque。
不要像其他人建议的那样使用Stack课程。
答案 2 :(得分:3)
您正在寻找ArrayList吗?
ArrayList l = new ArrayList<String>();
因此,您可以列出任何内容(在&lt;&gt;之间定义)。
答案 3 :(得分:2)
您可能正在寻找能够有效支持列表两端的推送/弹出式访问的ArrayDeque
。
避免 Stack
和Vector
- 这些是同步的,这通常意味着无意义的开销。
ArrayList
也没问题;但是,您需要实现自己的(普通)pop方法,因为它本身不提供它。 ArrayList
确实允许ArrayDeque
缺少索引访问权限。
答案 4 :(得分:1)
您可以使用ArrayDeque
,它不支持随机访问,但支持Deque
(双端队列)方法
答案 5 :(得分:1)
我认为这是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()
答案 6 :(得分:0)
Java有支持push和pop的Stack。 (http://download.oracle.com/javase/6/docs/api/java/util/Stack.html)
答案 7 :(得分:0)
答案 8 :(得分:0)
您需要的是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>
或其他。