2011-12-04 163 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是不推薦使用

相關問題