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

Java 8实现:从Answer列表筛选code在DataBean的answerCode列中的元素

解决方案

这问题我熟,给你两种实用的实现方式,看你项目用的Java版本选就行:

方式一:Java 8+ 流式处理(推荐)

这种写法简洁高效,利用Java Stream API来过滤。先把DataBean里的所有answerCode提取到一个Set里(Set的contains方法比List快很多,数据量大的时候优势明显),再过滤Answer列表:

// 先提取所有DataBean的answerCode到Set中
Set<Integer> answerCodes = dataBeanList.stream()
    .map(DataBean::getAnswerCode)
    .collect(Collectors.toSet());

// 过滤Answer列表,保留code在answerCodes中的对象
List<Answer> filteredAnswers = answerList.stream()
    .filter(answer -> answerCodes.contains(answer.getCode()))
    .collect(Collectors.toList());

方式二:传统循环实现(兼容低版本Java)

如果你的项目还在用Java 8之前的版本,用普通循环也能搞定,逻辑是一样的:

Set<Integer> answerCodes = new HashSet<>();
// 先收集所有answerCode
for (DataBean dataBean : dataBeanList) {
    answerCodes.add(dataBean.getAnswerCode());
}

List<Answer> filteredAnswers = new ArrayList<>();
// 遍历Answer列表筛选
for (Answer answer : answerList) {
    if (answerCodes.contains(answer.getCode())) {
        filteredAnswers.add(answer);
    }
}

小提示

为啥用HashSet而不是直接用List存answerCode?因为List.contains()是逐个遍历查找,时间复杂度是O(n),而HashSet.contains()是哈希查找,时间复杂度O(1),当你的数据量比较大的时候,性能差距会很明显。

内容的提问来源于stack exchange,提问作者gene b.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:49:41