使用 java 8 函数风格迭代 List
Java 8 函数式编程也通过 forEach
方法解决了这个问题,该方法接受一个 Consumer
类型的参数。
顾名思义,Consumer
的一个实例将通过它的 accept
方法消费给它的东西。
List<String> list = Arrays.asList(new String[]{"One","Two","Three","Four","Five"}); list.forEach(new Consumer<String>() { @Override public void accept(String name) { System.out.println(name); } });
这里,forEach
方法将为list
中的每个元素调用给定Consumer
的accept
方法,然后打印出名称。
你可以在 accept 方法中做任何你想做的事情。
使用迭代器迭代列表
List<String> list = Arrays.asList(new String[]{"One","Two","Three","Four","Five"}); Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); }
使用标准 for 循环迭代列表
List<String> list = Arrays.asList(new String[]{"One","Two","Three","Four","Five"}); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); }
欢迎 on
it
road
使用增强的 for 循环迭代列表
List<String> list = Arrays.asList(new String[]{"One","Two","Three","Four","Five"}); for (String str : list) { System.out.println(str); }
使用 java 8 lambda 表达式迭代列表
上面的 forEach
方法非常有效并且在设计上是正确的,但是它太冗长了。
我们可以使用 lambda 表达式将其修剪为更精简的版本。
List<String> list = Arrays.asList(new String[]{"One","Two","Three","Four","Five"}); list.forEach((final String name) -> System.out.println(name));
lambda 表达式的标准语法期望参数括在括号中,提供的类型信息和逗号分隔。
Java 编译器还提供了一些宽容,可以推断类型。
省去类型方便,省力,噪音小。
这里的类型信息是从集合本身推断出来的,因此我们也可以保留该信息。
// 使用 forEach() - 不包含类型信息 list.forEach(name -> System.out.println(name));
日期:2020-09-17 00:09:22 来源:oir作者:oir