在 C++ 中,我们可以有这种向量:
vector < int > v[20];
我必须在 c++ 中创建程序的 java 中的等价物。我可以声明
static ArrayList < ArrayList<Integer > > v;
但这不是我想要的。我希望它更直观。我正在尝试找到一种方法来轻松地在我的结构中添加元素。例如,如果我有一个图表并且我正在读取从 a 到 b 的道路,那么在 C++ 中 a 只需使用 v[a].push_back(b)。
首先vector<int> v[20]
不是vector的vector。
其次, ArrayList可能相当于std::vectors
Java 中的。
的一般等价物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 作为最小分母,并且需要强制转换。
初始数组只包含空值,需要初始化。
更正:
当然应该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);//....
}
}