首先创建一个List
然后输出list中的值使用 forEach就很简单了,直接使用
list.forEach(System.out::println);
就能直接输出list中的值
但是我们现在还想要获取list的索引要怎么办呢?
很可惜,Java8的 Iterable 并没有提供一个带索引的 forEach 方法。不过自己动手,丰衣足食——让我们自己写一个带索引的 forEach 方法:
import java.util.Objects;
import java.util.function.BiConsumer;
/**
* Iterable 的工具类
*/
public class Iterables {
public static <E> void forEach(
Iterable<? extends E> elements, BiConsumer<Integer, ? super E> action) {
Objects.requireNonNull(elements);
Objects.requireNonNull(action);
int index = 0;
for (E element : elements) {
action.accept(index++, element);
}
}
}
该 forEach 方法第一个参数为要遍历的 Iterable,第二个参数为 BiConsumer。BiConsumer 的输入参数第一个即索引,第二个为元素。
测试一下:
Iterables.forEach(list,(index, s) -> {
log.info("index:{},s:{}", + index, s);
});
输出的结果也确实是我们想要的这样就可以了。