如何在 Java 中枚举添加索引到类似 List 的集合

问题描述

注意:我不是指的是 java class Mapping: def __init__(self,iterable): self.items_list = [] Mapping.update(self,iterable) def update(self,iterable): for item in iterable: self.items_list.append(item) /enum 而是如何将集合中每个元素的序号/索引与元素相关联。我正在寻找相当于:

scala :

enumeration

蟒蛇

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

javascript :

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}`)) 列表? How to zip two Java Lists ?将索引与列表元素关联的最简洁方法是什么?

解决方法

List 可以被转换成一个以索引为键的映射,如下所示:

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

如果不需要 Map,Stream API 提供 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));

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...