如何使用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
相关产品推荐
相关产品推荐

