Java 相当于 C++ std::vector?

H. *_*Boe -4 c++ java arraylist

直到今天我还以为 Java 中的 ArrayList 和 C++ std::vectors 是一样的,但事实证明 ArrayList 只能存储对象。(原语被包裹)。我正在寻找的是这样的:

class Array {

    int i;
    type[] array;

    Array() {
        this.i = 0;
        this.array = new array[1];
    }

    Array(int initialSize) {
         this.i = 0;
         this.array = new array[initialSize];
    }

    type get(int index) {
        return array[index];
    }

    void add(type to_add) {
        if(array.length == i) {
            type[] newArray = new type[array.length * 2];
            for(int j = 0; j < array.length; j++) newArray[j] = array[j]; 
        }
        array[i++] = to_add; 
    }

}
Run Code Online (Sandbox Code Playgroud)

“type”是原始数据类型之一。

注意:我不需要存储对象的能力,所以我不想要 ArrayList 的内存开销。

如果我的任何假设是错误的,请告诉我:-D

编辑:这不是重复,这是一个关于性能的问题,而不是关于是否可能的问题。

Ste*_*n C 5

标准 (Java SE) 库不提供与std::vectorJava 基本类型一起使用的 C++ 类的等效项。替代方案是:

  • 使用标准类(比如ArrayListwith)Integer作为类型参数。

  • 使用第三方库。例如,旧的 GNU Trove 库。(注意:这不是建议。这是一个例子。)

Trove 和类似的东西不是也不能使用 Java 泛型来实现。这是因为Java只允许引用类型作为泛型类的参数。因此,这些 Java 库实际上是作为“复制和粘贴”代码实现的,其集合 API 没有多大程度的多态性。