3

Java で ArrayList の ArrayList を操作するときに問題に直面しています。私は自分のコードにこのことを持っています-

ArrayList<ArrayList<Integer>> L1 = new ArrayList<ArrayList<Integer>>();

問題は、これをどのように操作すればよいか(追加、削除、トラバーサルなど)がわからないことです。(単純な無向グラフを実装するために) 隣接リストを作成したいのですが、講師から ArrayList の ArrayList を作成するように勧められています。新しい要素を追加するために次のことができることを知っています-

L1.add(//Something I want to add);

しかし、これは明らかな理由により、現在のケースではエラーをスローします。

4

6 に答える 6

1
L1.add(new ArrayList<Integer>());

最初のリスト内に新しいリストを作成します。その後、次のことができます

L1.get(0).add(5)
于 2013-10-01T15:05:35.903 に答える
1
List<List<Integer>> L1 = new ArrayList<ArrayList<Integer>>();    
List<Integer> list1 = new ArrayList<Integer>();     
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
list1.add(5);

// リストにリストを追加

L1.add(list1); 

リストのリストを反復する

for( List<Integer> list: L1 ){
      for(Integer i:list){
          System.out.println(i);
      }
}
于 2013-10-01T15:06:09.777 に答える
1

を試してくださいL1.get(i).add(whatever);。もちろん、最初にL1.get(i)存在するかどうかを確認します。そうでない場合は、最初にその内部リストを追加します。

それは次のようなものです:

List<List<Integer>> L1 = new ArrayList<List<Integer>>(); //better use interfaces

List<Integer> first = null;
if( L1.size() > 0) {
 first = L1.get(0); //first element
}
else {
  first = new ArrayList<Integer>();
  L1.add(first);      
}

first.add(4711); //or whatever you like to add
于 2013-10-01T15:04:21.123 に答える