如何枚举(添加索引)到 Java 中的类列表集合

How to enumerate (add indices) to a List-like collection in Java

注:我不是指的是javaenum/enumeration而是指如何关联ordinal/index集合中的每个元素与元素。我正在寻找相当于 :

scala:

(1 to 10).zipWithIndex.foreach{ case (obj,i) =>  println(s"Obj[$i]=$obj") }obj.length}

python :

for i,obj in enumerate(range(1,11)):   
   print(f"obj[{i}]={str(obj)}")

java脚本 :

var myList= [...Array(10)].map((_,i) => 1+i)
myList.forEach( (obj,i) => console.log(`obj[${i}]=${obj}`))

java好像没有perfect/simple类比?我们是否需要像这个问题一样使用有点笨拙的列表手册 zipHow to zip two Java Lists ?将索引与列表元素相关联的最简洁的方法是什么?

可以将列表转换为以索引为键的映射,如下所示:

IntStream.range(0, list.size())
         .boxed()
         .collect(Collectors.toMap(i -> i, i -> list.get(i)));

如果不需要Map,StreamAPI提供IntStream::forEach方法:

IntStream.range(0, list.size())
         .forEach(i -> System.out.println(i + " -> " + list.get(i)));

也可以使用 Iterable::forEach 并单独计算索引(例如 AtomicInteger):

AtomicInteger index = new AtomicInteger(0);
list.forEach(x -> System.out.println(index.getAndIncrement() + " -> " + x));