
java8遍历集合如何获取索引
用户关注问题
使用Java8的Stream API遍历List时,如何同时获取元素的索引值?
通过IntStream.range结合List访问索引
可以使用IntStream.range(0, list.size())创建索引流,然后通过索引访问List元素。例如:IntStream.range(0, list.size()).forEach(i -> { System.out.println("索引: " + i + ", 元素: " + list.get(i)); });
有没有一种Java8风格的方法,可以不用写传统的for循环,也能遍历集合并获取对应的索引?
利用Stream和索引辅助流实现遍历
Java8的Stream不直接支持索引,但可以结合IntStream.range或AtomicInteger变量来辅助遍历,例如使用AtomicInteger作为计数器:AtomicInteger index = new AtomicInteger(0); list.stream().forEach(item -> { int i = index.getAndIncrement(); /* 使用索引i和元素item */ });
在遍历Map时,怎样能访问每个键值对以及对应的遍历顺序,也就是类似索引的位置?
使用EntrySet与索引流共同遍历
先将Map的entrySet转成List,再利用IntStream.range方法遍历其索引,代码示例:List<Map.Entry<K,V>> entries = new ArrayList<>(map.entrySet()); IntStream.range(0, entries.size()).forEach(i -> { Map.Entry<K,V> entry = entries.get(i); /* 使用索引i,键entry.getKey()和值entry.getValue() */ });