You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Java 8 Stream API遍历枚举值及提取枚举cspId列表

嘿,这两个问题都挺常见的,我来一步步给你讲清楚怎么用Java Stream来处理枚举~

问题1:如何使用Java 8 Stream API遍历枚举值?

枚举类型自带一个values()方法,会返回该枚举所有实例组成的数组。我们只需要把这个数组转换成Stream,就能用Stream的各种操作来遍历啦。

举个例子,遍历Board枚举的所有值并打印它们的id和名称:

// 把枚举数组转成Stream
Arrays.stream(Board.values())
      .forEach(board -> System.out.printf("ID: %d, Name: %s%n", board.getId(), board.getName()));

如果只是需要简单遍历执行操作,forEach就足够了;要是还需要做过滤、映射等其他操作,也可以在forEach之前添加对应的Stream方法。

问题2:如何使用Java Stream API从枚举列表中仅提取cspId并转换为Integer类型列表?

针对你给出的示例代码,我们可以直接对numbers这个枚举列表调用stream()方法,然后通过map操作提取每个枚举实例的cspId(因为getId()返回的是int,Java会自动装箱成Integer),最后用collect把结果收集成List<Integer>。

修改后的代码如下:

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class Test {
    public static void main(String args[]){
        List<Board> numbers=new ArrayList<>();
        numbers.add(Board.MY_BOARD);
        numbers.add(Board.TEST_BOARD);
        
        // 用Stream提取cspId并转为Integer列表
        List<Integer> list = numbers.stream()
                                    .map(Board::getId) // 提取每个Board的id
                                    .collect(Collectors.toList()); // 收集成List<Integer>
        
        System.out.println(list); // 输出 [0, 2]
    }
}

enum Board{
    MY_BOARD(0, "My Dashboard"),
    WEB_BOARD(1, "web Dashboard"),
    TEST_BOARD(2, "web Dashboard") ;
    private int cspId;
    private String name;
    Board(int id, String name) {
        this.cspId = id;
        this.name = name;
    }
    public int getId() {
        return cspId;
    }
    public String getName() {
        return name;
    }
}

这里用到了方法引用Board::getId来简化lambda表达式,看起来更简洁。如果你的项目里用的是Java 16+,还可以用Collectors.toList()的替代写法Stream.toList(),不过上面的写法在Java 8及以上都能正常运行。

对了,如果你是想直接遍历枚举的所有值来提取id,而不是用手动创建的numbers列表,那也可以结合问题1的写法:

List<Integer> allBoardIds = Arrays.stream(Board.values())
                                 .map(Board::getId)
                                 .collect(Collectors.toList());

内容的提问来源于stack exchange,提问作者madhusudhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:27:22