C++向量,Java数组等效

C++ vector, java array equivalent?

本文关键字:数组 Java 向量 C++      更新时间:2023-10-16

在 c++ 中,我们可以有这样的向量:

vector < int > v[20];

我必须在 java 中创建等效的 c++ 程序。我可以声明

static ArrayList < ArrayList<Integer > > v;

但这并不完全是我想要的。我希望它更直观。我正在尝试找到一种轻松在结构中添加元素的方法。例如,如果我有一个图表,并且我正在读取从a到b的道路,则C++只需使用v[a].push_back(b)。

首先vector<int> v[20]不是向量的向量。

其次,ArrayList相当于Java中的std::vectors

vector.push_back的一般等价物可以是这样的,即使用通用列表:-

List<Integer> x = new ArrayList<Integer>();
x.add(1);
    List<Integer>[] v = (List<Integer>[]) Array.newInstance(Integer.class, 20);
    {
        for (int i = 0; i < v.length; ++i) {
            v[i] = new ArrayList<>();
        }
    }

可悲的是,Java在这里不是那么简洁或设计得很好。 Array.newInstance适用于所有硬币:int[][][]将是Array.newInstance(int.class, 10, 10, 10).因此,它返回一个 Object 作为最小分母,并且需要强制转换。

初始数组仅包含 null,需要初始化。

校正:

当然应该List.class而不是Integer.class.

import java.util.Vector;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Vector<Integer>[] anArray = (Vector<Integer>[]) new Vector[100];
        for(int i = 0; i < anArray.length; i++)
           anArray[i] = new Vector<Integer>();
        anArray[2].add(2);//....
    }
}