int [] [] convert --to - &gt;矢量<矢量<双>&GT; </载体<双>

时间:2011-12-04 12:54:02

标签: java vector double int

我想将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));

否则你能给我一个更好的例子吗?再次感谢一堆。

3 个答案:

答案 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是一个不推荐使用的旧集合