有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

与std::deque相当的Java集合

<>我是一个比较新的java程序员,来自C++/STL,我正在寻找一个具有这些特性的类(C++的STD::DeQue:我理解的):

  1. O(1)开始/结束时的插入/移除性能
  2. O(1)按索引查找的性能
  3. 是可增长的集合(不需要固定大小的界限)

有没有类似的Java语言?我找到了Java 1.6[ArrayQue]类,它具有插入/删除和可增长的特性,但似乎没有按索引进行查找,除非调用toArray(),而不是O(1)


共 (2) 个答案

  1. # 1 楼答案

    下面是一个随时可用的circular buffer implemented in Java, CircularArrayList。不过,它在被创造出来后是不能生长的。(免责声明:此链接指向我自己的网站

    另一个在网络上浮动的选项是one from the Java Specialists Newsletter。我从未使用过这个,原因如下:

    1. 它是不完整的(“这个方法留给读者作为练习”)
    2. 它不支持泛型元素类型,这与Java集合框架中的其他集合是一致的
    3. 它不必要地复杂,因此可能有缺陷,而不是遵循AbstractList的Javadoc推荐的扩展过程
  2. # 2 楼答案

    Primitive Collections for Java有一个带有get(int idx)方法的ArrayQue

    http://sourceforge.net/projects/pcj

    不过我不能保证这个项目的质量

    另一种方法是获取JDK ArrayDeque源代码,并自己添加get(int idx)方法。应该相对容易

    编辑:如果您打算以高度多线程的方式使用deque,我会选择“修补JDK的ArrayQue”路线。这个实现已经过全面测试,并在新的java中使用。util。并发ForkJoin框架