lists.forEach java使用forreach遍历时如何获取当前的索引
在 Java 中使用 List.forEach() 或 Stream.forEach() 遍历时,默认无法直接获取当前元素的索引,因为 forEach 只接受一个 Consumer,不提供索引参数。
如果你需要索引,可以使用以下几种替代方式:
1. 使用传统的 for 循环(最直接)
java
for (int i = 0; i < list.size(); i++) {
String item = list.get(i);
System.out.println("索引:" + i + ",元素:" + item);
}2. 使用 AtomicInteger 作为计数器(适合 forEach 风格)
java
AtomicInteger index = new AtomicInteger(0);
list.forEach(item -> {
int i = index.getAndIncrement();
System.out.println("索引:" + i + ",元素:" + item);
});3. 使用 IntStream.range() 遍历索引
java
IntStream.range(0, list.size())
.forEach(i -> {
String item = list.get(i);
System.out.println("索引:" + i + ",元素:" + item);
});4. 使用 ListIterator(同时支持反向遍历)
java
ListIterator<String> it = list.listIterator();
while (it.hasNext()) {
int i = it.nextIndex();
String item = it.next();
System.out.println("索引:" + i + ",元素:" + item);
}5. 使用外部数组(仅当集合是随机访问时有效)
java
Object[] array = list.toArray();
for (int i = 0; i < array.length; i++) {
System.out.println("索引:" + i + ",元素:" + array[i]);
}注意:
List.forEach本身没有提供索引,因为它的设计目标是简洁地处理每个元素,不关心位置。如果需要索引,请根据场景选择上述方法。通常情况下,传统的for循环或IntStream方式最清晰且高效。