2011-08-19 56 views
2

我已经非常喜欢C++中的一些结构,并且我最近一直在将一些旧学校项目移植到java,但遇到了一些未解决的问题简单的谷歌搜索......所以我想我会在这里问:C++到java,语言等同性问题

在C++中我很喜欢Stringstreamvectorlistdequeue,但一直没能找到足够的文档上任意的他们。当我尝试使用Vector时,netbeans告诉我它已被弃用,这是否意味着其他代码占据了它的位置?有没有其他容器我应该使用?

谢谢!

回答

5

对于Stringstream可以使用java.io.ByteArrayOutputStream

C++的Vector<T>是基本相同java.util.ArrayList<T>

list<T>最接近的比赛将是java.util.LinkedList<T> - 两者都为双向链表实现的(如果你想要的是,虽然一个有序的元素集合,您应该使用更通用的接口,java.lang.List<T>

您也可以使用java.util.LinkedList<T>为您的实现deque<T>的离子。 java.util.LinkedList<T>实现队列/堆栈所需的所有功能。

NetBeans告诫您012bd已被弃用的原因是因为使用由Java Collections API引入的数据结构通常是一个更好的主意。在Vector<T>的地方,你应该使用诸如java.util.ArrayList<T>java.util.LinkedList<T>之类的东西。

+2

+1用于提及java.lang.List 。值得理解的是,如何在Java中定义一个变量(列表),然后用您的首选实现(LinkedList ,ArrayList ) – Chap

+0

实例化您的答案非常感谢,我想我会给LinkedList一个旋转! – HunderingThooves

0

如果我没有错,Vector甚至比ArrayList慢,因为它是同步的。

+0

你没有错。此外,同步是天真的,所以它实际上并没有那么有用。这就是为什么你应该总是使用像'Collections.synchronizedList()'或'CopyOnWriteArrayList'等更新的同步API。 – Bringer128