我有一个类型为Room的ArrayList(我的自定义对象)定义如下
ArrayList<Room> rooms = new ArrayList<Room>();
然后在ArrayList中添加一系列对象后,我想通过它们查看各种内容。我不是java的敏锐用户,但我知道在许多其他编程语言中,foreach循环将是最简单的方法。
经过一番研究后,我发现以下链接提示下面的代码。 How does the Java 'for each' loop work?
for(Iterator<String> i = someList.iterator(); i.hasNext(); ) {
String item = i.next();
System.out.println(item);
}
但据我所知,这不能用于自定义对象的Arraylist。
可以,如果是这样,我如何为自定义对象的ArrayList实现foreach循环? 或者我怎么能处理每个项目?
答案 0 :(得分:28)
实际上enhanced for loop看起来应该是这样的
for (final Room room : rooms) {
// Here your room is available
}
答案 1 :(得分:5)
for(Room room : rooms) {
//room contains an element of rooms
}
答案 2 :(得分:3)
还可以使用Java 8流API并在一行中执行相同的操作。
如果要打印任何特定属性,请使用以下语法:
ArrayList<Room> rooms = new ArrayList<>();
rooms.forEach(room -> System.out.println(room.getName()));
OR
ArrayList<Room> rooms = new ArrayList<>();
rooms.forEach(room -> {
// here room is available
});
如果要打印Java对象的所有属性,请使用以下方法:
ArrayList<Room> rooms = new ArrayList<>();
rooms.forEach(System.out::println);
答案 3 :(得分: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);
}
答案 4 :(得分:0)
如果此代码无法对列表中的每个项目进行操作,那么必须是因为在您完成列表之前某些事情会引发异常;最有可能的候选人是名为&#34; insertOrThrow&#34;的方法。您可以在try-catch结构中包装该调用,以便在没有退出循环和方法的情况下处理任何失败的项目的异常。