我想将integer [] []
转换为Vector<Vector<Double>>
。经过多次阅读,似乎没有人在网上留下一个可搜索的帖子,用于这种性质的东西。大量的int矢量到双向量,arraylist到向量等。可悲的是我还没有找到我要找的东西。那么......你们中的任何一个人都知道一个合适的方法吗?我在考虑将int[][]
转换为字符串,然后将其转换为vector<vector<Double>>
。意见?这样的事情是否有用,即。将我的数组转换为对象数组
Object[] a1d = { "Hello World", new Date(), Calendar.getInstance(), };
// Arrays.asList(Object[]) --> List
List l = Arrays.asList(a1d);
// Vector contstructor takes Collection
// List is a subclass of Collection
Vector v;
v = new Vector(l);
// Or, more simply:
v = new Vector(Arrays.asList(a1d));
否则你能给我一个更好的例子吗?再次感谢一堆。
答案 0 :(得分:2)
首先:避免Vector
,它已经过时;使用ArrayList
代替(或类似的东西)。
Read more here
其次,如果我必须将2d数组转换为列表列表,我会保持简单:
List<List<Double>> list = new ArrayList<ArrayList<Double>>();
for(int i=0; i<100; i++) //100 or whatever the size is..
{
List<Double> tmp = new ArrayList<Double>();
tmp = Arrays.asList( ... );
list.add( tmp );
}
我希望我理解你的问题。
答案 1 :(得分:1)
Vector是一个不被弃用但不应再使用的旧类。改为使用ArrayList。
您应该使用LIst接口而不是使用具体的Vector类。接口上的程序,而不是实现。
此外,重复这样的转换表明缺乏设计。每次需要新功能时,都会将数据封装到不需要转换的可用对象中。
如果你真的需要这样做:使用循环:
int[][] array = ...;
List<List<Double>> outer = new Vector<List<Double>>();
for (int[] row : array) {
List<Double> inner = new Vector<Double>();
for (int i : row) {
inner.add(Double.valueOf(i));
}
outer.add(inner);
}
从int转换为STring然后从String转换为Double是浪费。
答案 2 :(得分:0)
矢量是一维的。 您可以使用Vector of Vectors来模拟2D数组:
Vector v = new Vector();
for (int i = 0; i < 100; i++) {
v.add(new Vector());
}
//add something to a Vector
((Vector) v.get(50)).add("Hello, world!");
//get it again
String str = (String) ((Vector) v.get(50)).get(0);
注意:Vector是一个不推荐使用的旧集合