2016-11-24 8 views
1

私はarraylistのarraylistを作成したいと思っています。arraylistのJava arraylist - クラスオブジェクトで多次元arraylistを作成する

import java.util.ArrayList; 
import java.util.List; 

class Neighbors{ 
ArrayList<Integer> inner = new ArrayList(); 
Neighbors(){} 
} 

ArrayList<Neighbors> outer = new ArrayList<Neighbors>(); 

void setup() { 
size(1280, 700, JAVA2D); 
background(0); 

Neighbors test1 = new Neighbors(); 
Neighbors test2 = new Neighbors(); 

test1.inner.add(0); 
test1.inner.add(1); 
test1.inner.add(2); 

test2.inner.add(5); 
test2.inner.add(6); 
test2.inner.add(7); 

println(test1.inner); 
println(test2.inner); 
// outer.add((ArrayList)test.inner); 
outer.add(test1.inner); 
outer.add(test2.inner); 
println(outer); 

} 

これは私のコードですが、内側の配列を外側の配列に追加できませんでした。私がやっていることが正しいのか分かりません。あるいは、正しい方法でこれを行う他の方法があれば、助けてください。

まず、私はクラスの下でオブジェクトとしてarraylistを作成しようとしています。私はouterarraylistでこれらの内側のarraylistを使いたいと思います。基本的に私はクラスの助けを借りて2d arraylistが必要です。 arraylist内でarraylistを使用したり、アイテムを追加したり、アクセスする方法のサンプルコードを教えてください。

+1

どのようにこれらのarraylistsを一緒に使いたいですか?彼らはさまざまな型( 'Integer'と' Neighbor')を持っているので、それらを混ぜることはできません。また、そのクラスの外部からいくつかのクラスのメンバ変数にアクセスするだけでは、カプセル化が不十分とみなされます。あなたは本当に何をしようとしていますか? – Robert

+1

2次元の「ArrayList」が必要な場合は、 'ArrayList >'を試してみましたか?あなたは何を達成しようとしていますか? – Logan

+0

私はこれらのarraylistsを2dグリッドまたは動的メモリを持つマトリックスとして使用したいと考えています。 各々は整数を、例えばため を保持する: 0(行) - 5、6、8、10 1(行) - 21、4、5 2(行) - 1、4、5、5、 – zack

答えて

2

の代わりに:

outer.add(test1.inner); 
outer.add(test2.inner); 

あなたの代わりに、次を使用しますか?

outer.add(test1); 
outer.add(test2); 

編集:outerを印刷するには、これを試してください。

まず、NeighborsクラスにtoString()メソッドを追加します。

class Neighbors { 
    ArrayList<Integer> inner = new ArrayList(); 

    @Override 
    public String toString() { 
     return inner.toString(); 
    } 
} 

その後、あなたは、単に使用してouterを印刷することができます。

また
System.out.println(outer); 

、あなたはクラスを使用したくない場合は、 ArrayListのArrayListを使うことができます:

ArrayList<ArrayList<Integer>> outer = new ArrayList<>(); 
outer.add(new ArrayList<>()); 
outer.get(0).add(0); 
outer.get(0).add(1); 
outer.get(0).add(2); 

ArrayList<Integer> inner = new ArrayList<>(); 
inner.add(3); 
inner.add(4); 
outer.add(inner); 

System.out.println(outer); 

これは[[0, 1, 2], [3, 4]]を出力します。

+0

はい、そうです、それはうまくいきます。ありがとうございました。では、どうやって外側のarraylistを印刷するのですか? println(外側)。 - doesn; arraylistに代えて、場所を与える代わりに – zack

+0

私の編集をチェックし、助けてくれたら教えてください。もしそうなら、私の答えを正しいものとしてマークしてください。 :) –

+0

なぜtostringを使用する必要がありますか?それらにアクセスする他の方法はありますか?あなたが気にしないなら、上記の質問のコメントを読んで、私が正しい方法でそれを実装しているかどうかを教えてください。 クラスオブジェクトを使用してarraylistのarraylistを実装する必要があります。 – zack