如何枚举(添加索引)到 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类比?我们是否需要像这个问题一样使用有点笨拙的列表手册 zip
? How 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));
注:我不是指的是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类比?我们是否需要像这个问题一样使用有点笨拙的列表手册 zip
? How 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));