用于自定义对象列表的java中的Foreach循环

mr.*_*741 5 java foreach arraylist

我有一个类型为Room的ArrayList(我的自定义对象)定义如下

ArrayList<Room> rooms = new ArrayList<Room>();
Run Code Online (Sandbox Code Playgroud)

然后在ArrayList中添加一系列对象后,我想通过它们查看各种内容.我不是java的敏锐用户,但我知道在许多其他编程语言中,foreach循环将是最简单的方法.

经过一番研究后,我发现以下链接提示下面的代码. 每个'循环的Java'如何工作?

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

但据我所知,这不能用于自定义对象的Arraylist.

可以,如果是这样,我如何为自定义对象的ArrayList实现foreach循环?或者我怎么能处理每个项目?

Shy*_*hyJ 29

实际上,增强的for循环应该是这样的

for (final Room room : rooms) {
          // Here your room is available
}
Run Code Online (Sandbox Code Playgroud)

  • 当你使用一个保持常量值的变量或一个不应该改变的引用(如你的情况)时,使用`final`关键字被认为是一种很好的做法.在这个`for`循环中,它可以防止其中的代码意外地将不同的`Room`分配给`room`局部变量. (4认同)

Ama*_*dey 8

Using 也可以使用 Java 8 流 API 并在一行中做同样的事情。

如果要打印任何特定属性,请使用以下语法:

ArrayList<Room> rooms = new ArrayList<>();
rooms.forEach(room -> System.out.println(room.getName()));
Run Code Online (Sandbox Code Playgroud)

或者

ArrayList<Room> rooms = new ArrayList<>();
rooms.forEach(room -> {
    // here room is available
});
Run Code Online (Sandbox Code Playgroud)

如果要打印 Java 对象的所有属性,请使用以下命令:

ArrayList<Room> rooms = new ArrayList<>();
rooms.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)


小智 5

for(Room room : rooms) {
  //room contains an element of rooms
}
Run Code Online (Sandbox Code Playgroud)

  • 因此,在迭代时,不允许更新其值. (2认同)