2017-08-23 13 views
1

私はJavaを使用してオブジェクトを再帰的に反復しようとしています。私の例を単純化するために、このクラスがSimpleと呼ばれ、0からnまでの他のSimpleオブジェクトを含むことができるIDとリストを含んでいて、それらのSimpleオブジェクトは0〜n個の他のSimpleオブジェクト、Javaのオブジェクトのリストでオブジェクトを反復する最良の方法

私がやりたいことは、SimpleとIDを渡して、自分のメソッドでそのIDと一致するSimpleを返すことです。 - それは空のリストを持っているという単純なに当たるとして、私の方法は、すぐに終了return文で

public static Simple getSimpleById(Simple simple, int id) { 
    if (simple.getId() == id) { 
     return simple; 
    } else { 
     for (Simple s : simple.getSimpleList()) { 
      return getSimpleById(s, id); 
     } 
    } 
    return null; // no match found 
} 

問題は、再帰的メソッド呼び出しである:以下は私が書かれている方法です。 return文がなければ、一致が見つかるとSimpleが呼び出し側に返され、メソッドは反復処理を継続します。

私は再帰で何をする必要があるのでしょうか、間違った木を吠えますか?私はそれがここで問題を引き起こしているリストだと思う、これを行うための良い方法がありますか?私はこれを試して考えていなかった理由を

答えて

3

for (Simple s: simple.getSimpleList()) { 
    Simple simple = getSimpleById(s, id); 
    if (simple != null) return simple; 
} 
+1

に変更し、それはうわー、それは(何もしゃれが意図していない)ので、簡単です、私は知りません。速やかな応答をありがとう、これは完全に動作しているようだ。 – SourMonk

関連する問題