8

以下のように定義された Room (私のカスタム オブジェクト) タイプの ArrayList があります。

ArrayList<Room> rooms = new ArrayList<Room>();

その後、一連のオブジェクトを ArrayList に追加した後、それらすべてを調べてさまざまなことを確認したいと思います。私はJavaの熱心なユーザーではありませんが、他の多くのプログラミング言語ではforeachループがこれを行う最も簡単な方法であることを知っています.

少し調査した後、以下のコードを示唆する次のリンクを見つけました。 Javaの「for each」ループはどのように機能しますか?

for(Iterator<String> i = someList.iterator(); i.hasNext(); ) {
  String item = i.next();
  System.out.println(item);
}

しかし、私が知る限り、これはカスタム オブジェクトの Arraylist には使用できません。

カスタム オブジェクトの ArrayList に foreach ループを実装するにはどうすればよいですか? または、そうでなければ各アイテムをどのように処理できますか?

4

5 に答える 5

36

実際、強化された for ループは次のようになります。

for (final Room room : rooms) {
          // Here your room is available
}
于 2012-11-22T22:04:28.070 に答える
5
for(Room room : rooms) {
  //room contains an element of rooms
}
于 2012-11-22T22:07:41.757 に答える
2

クラスのパラメーター化を変更することで、反復子パターンを使用して例を修正できます。

List<Room> rooms = new ArrayList<Room>();
rooms.add(room1);
rooms.add(room2);
for(Iterator<Room> i = rooms.iterator(); i.hasNext(); ) {
  String item = i.next();
  System.out.println(item);
}

またはもっと簡単な方法:

List<Room> rooms = new ArrayList<Room>();
rooms.add(room1);
rooms.add(room2);
for(Room room : rooms) {
  System.out.println(room);
}
于 2012-11-22T22:06:35.690 に答える
0

このコードがリスト内のすべての項目で動作しない場合は、リストを完了する前に何かが例外をスローしていることが原因であるに違いありません。最も可能性の高い候補は、「insertOrThrow」と呼ばれるメソッドです。その呼び出しを try-catch 構造でラップして、ループやメソッドを途中で終了することなく、失敗したアイテムの例外を処理できます。

于 2015-07-06T11:15:42.163 に答える