2011-12-04 113 views
1

我想将integer [] []转换为Vector<Vector<Double>>。经过多次阅读后,似乎没有人在网络上留下可搜索的帖子来寻找这种性质的东西。大量的int矢量来加倍矢量,arraylist到矢量等。可悲的是我还没有找到我在找什么。所以..你们有没有人知道一个适当的方法呢?我正在考虑将我的int[][]转换为字符串,然后将其转换为vector<vector<Double>>。意见?像这样的东西是有用的,即。转换我的数组对象数组int [] [] convert --to - > 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)); 

否则,你能给我一个更好的例子,可能有更少的步骤?再次感谢Bunch。

回答

1

向量是一个旧的类,不被弃用,但不应该再使用。改用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到字符串转化,然后从字符串到双是一种浪费。

+0

您可以通过提的是'VECTOR'改善答案的收旧,因为只有在需要线程安全实现的情况下,'List'接口的实现才比'ArrayList'更可取。 –

+0

如果我需要同步化列表,我更喜欢使用Collections.synchronizedList(list)。无论如何,构建一个线程安全的程序大部分时间还不够,因为无论如何,您经常需要比较和设置操作,需要明确的同步。 –

+0

我确实看到了每个人对于矢量的观点,但是我要求转换为矢量的原因在于作业要求它,个人我没有看到完成另一个步骤的任何一点,因为我具有所需的所有功能。另一方面,被迫使用这个骨架类来存储我最后的int数组,会迫使我熟悉java中的超类结构和继承/多态。谢谢你的答案 –

2

首先:避免Vector,它已经过时;改用ArrayList(或类似的东西)。 Read more here

其次,如果我有一个二维数组转换成列表的列表,我会保持它很简单:

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); 
} 

我希望我正确理解你的问题。

0

矢量是一维的。 你可以有向量的向量来模拟二维数组:

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是不推荐使用

相关问题