当前位置: 首页 > 知识库问答 >
问题:

如何在Java中枚举(添加索引)到类似列表的集合[重复]

钱华晖
2023-03-14

注意:我指的不是java枚举/枚举,而是如何将集合中每个元素的序号/索引与该元素关联起来。我正在寻找相当于:

scala:

(1 to 10).zipWithIndex.foreach{ case (obj,i) =>  println(s"Obj[$i]=$obj") }obj.length}
for i,obj in enumerate(range(1,11)):   
   print(f"obj[{i}]={str(obj)}")
var myList= [...Array(10)].map((_,i) => 1+i)
myList.forEach( (obj,i) => console.log(`obj[${i}]=${obj}`))

java似乎没有一个完美/简单的模拟?我们需要像这个问题一样使用有点尴尬的列表手册zip吗?如何压缩两个Java列表?将索引与列表元素关联的最简洁的方法是什么?

共有1个答案

楚方伟
2023-03-14

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));
 类似资料:
  • 问题内容: 如果需要在列表中添加枚举属性,如何声明列表?让我们说枚举类是: 我想要做: 需要用什么代替 问题答案: 如果要使用字符串类型,请使用以下命令: 否则,MByD的答案

  • 问题内容: 我需要枚举包中的所有类并将它们添加到列表中。单个类的非动态版本如下所示: 如何动态地将所有类添加到包及其所有子包中? 问题答案: 有关更加健壮和功能丰富的类路径扫描器,请参见https://github.com/classgraph/classgraph。我建议您先阅读我的代码片段以获得高水平的理解,然后再使用lukehutch的工具进行生产。

  • 问题内容: 我有一个枚举的类对象(我有一个),我需要获取此枚举表示的枚举值的列表。该静态函数有我需要什么,但我不知道怎么去从类对象访问它。 问题答案:

  • 问题内容: 我在Java中有一个枚举: 我想按索引访问枚举值,例如 我该怎么办? 问题答案: 试试这个

  • 问题内容: 首先,这不是中Enums的重复:) 这个问题的公认答案表明,这是表示Ruby中枚举的好方法: 在Java中,可以将多个值和方法附加到枚举值。我想在Ruby中实现相同或相似的东西。 代表此Java枚举的最类似于Ruby的方式是什么: 编辑: 我还想保留Java枚举的隐式功能: …检索序数值 …对枚举值(或等效值)的调用方法 例子: 问题答案: class MyEnum attr_acce

  • 问题内容: 是否可以创建枚举值的ArrayList(并对其进行操作)?例如: 问题答案: 是的,绝对有可能,但是您必须这样做 然后,您可以将元素添加到:或。