2011-12-04 9 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)); 

そうでなければ、より少ない手順で良い例ができますか?ありがとう、もう一度束。

答えて

1

Vectorは非推奨ではありませんが、もはや使用しない古いクラスです。代わりにArrayListを使用してください。

具体的なVectorクラスを使用するのではなく、LIstインターフェイスを使用する必要があります。実装ではなく、インタフェースに関するプログラム。

さらに、このような繰り返しの変換を行うと、デザインが不足しています。新しい機能が必要になるたびに、変換の必要がない使用可能なオブジェクトにデータをカプセル化します。

あなたが本当にこれを実行する必要がある場合:使用がループ:

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(または類似のもの)を使用してください。私はリストのリストに2次元配列に変換しなければならない場合 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

ベクトルは1次元です。

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

注: あなたは2次元配列をシミュレートするためのベクトルのベクトルを持つことができベクターは

関連する問題