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

如何使用Java Stream从员工列表的嵌套地址中提取唯一城市并存入Set

使用Java Stream实现嵌套列表的唯一城市集合获取

你可以通过flatMap扁平化嵌套列表,结合map和collect操作完成需求,改写后的代码如下:

import java.util.Set;
import java.util.stream.Collectors;

public static Set<String> getCityUniquName(List<Employee> emp) {
    return emp.stream()
            .flatMap(employee -> employee.getAddress().stream())
            .map(Address::getCity)
            .collect(Collectors.toSet());
}

代码拆解说明:

  • emp.stream():将员工列表转换为Stream<Employee>,开启Stream操作流程
  • flatMap(...):核心操作,把每个员工对应的地址列表(List<Address>)转换为Stream<Address>,并将所有这些子流合并成一个统一的Stream<Address>,等价于原代码中嵌套循环遍历员工和地址的逻辑
  • map(Address::getCity):将每个Address对象映射为对应的城市字符串,对应原代码里的add.getCity()取值操作
  • collect(Collectors.toSet()):将流中的城市字符串收集到Set集合中,利用Set的特性自动去重,等价于原代码中手动往HashSet添加元素的逻辑

如果需要保留城市的出现顺序,可以将收集器替换为Collectors.toCollection(LinkedHashSet::new):

.collect(Collectors.toCollection(LinkedHashSet::new));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:20:42