2016-08-24 5 views
0

メインarraylist内のすべてのアイテムを繰り返したいと思っています。ArrayListを反復する<Class>そのクラス

出力は、これまでのところ、私はあなたがそれがA3、a3_1と事前にa3_2

感謝を示していない見ることができるように...消えました!

addModelは、そのオブジェクトの内部Araylistにモデルを追加します。

は、ここに私のコードです。 Modelクラスのメソッドです。

MODEL

public class Model { 
    String name; 
    String surname; 
    ArrayList<Model> arr = new ArrayList<Model>(); 

....//Constructor, getters,setters, toString\\ 

} 

MAIN

public class Test{ 
    public static void main(String[] args) { 
     ArrayList<Model> list = new ArrayList<Model>(); 

     Model a= new Model("1", "1"); 
     list.add(a); 

     Model a2 = new Model("2", "2"); 
     list.add(a2); 

     Model a2_1 = new Model("2_1", "2_1"); 
     a2.addModel(a2_1); 

     Model a2_2 = new Model("2_2", "2_2"); 
     a2.addModel(a2_2); 

     Model a2_3 = new Model("2_3", "2_3"); 
     a2.addModel(a2_3); 

     Model a3 = new Model("3", "3"); 
     list.add(a3); 

     Model a3_1 = new Model("3_1", "3_1"); 
     a3.addModel(a3_1); 

     Model a3_2 = new Model("3_2", "3_2"); 
     a3.addModel(a3_2); 


     iterate(list,0,true); 
     System.out.println("\nEnd"); 
    } 

    public static int iterate(ArrayList<Model> m, int i, boolean isNew){ 
     System.out.println(m.get(i).toString()); 

      if(!m.get(i).getArr().isEmpty()){ 
       Model mx = m.get(i); 
       ArrayList<Model> nextArray=mx.getArr(); 
       if(isNew) 
        return iterate(nextArray, 0,true); 
       else 
        return iterate(nextArray, i,false); 
      } 
      else{ 
       return iterate(m, i+1,true); 
      } 
    } 
} 

あなたの反復機能がJAVに置き換えることができOUTPUT

{ name: 1 surname: 1} 

{ name: 2 surname: 2} 
Exception in thread "main" 
{ name: 2_1 surname: 2_1} 

{ name: 2_2 surname: 2_2} 

{ name: 2_3 surname: 2_3} 
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3 

答えて

0

別のオプション

public static void iterate(ArrayList<Model> modelList) { 

    if (modelList == null) return; 

    for (Model model : modelList) { 
     System.out.println(model.toString()); 
     iterate(model.getArr()); 
    } 
} 
+0

感謝していますそれらのすべてを一覧表示するeveryhtingを試してみました!!!!それはあなたが私の日を救った答えです! – trd3v3lop

0

a8を使用する

list.stream().map(Model::getArr).flatMap(List::stream).forEach(System.out::println); 

変数isNewがどのようにfalseになるかもわかりません。私は、Java 7を使用

+0

うん、あなたはisNewについて右に見えるが、私はので、私はそのよう終わった:)私は初心者 – trd3v3lop

関連する問題