如何使用Lambda在Java中将列表列表转换为哈希集
我有一个包含用户数据的类。
public class UserData {
@JsonProperty("uid")
private String userId;
@JsonProperty("cities")
private List<Integer> cities;
}
从List<UserData>,我想提取所有独特的城市。改变,我正在为此做,
Set<Integer> citiesList = new HashSet<>();
for (UserData userData : userDataList)
citiesList.addAll(userData.getCities());
lambda这些变化的表达方式是什么?
任何帮助将非常感激。
回答
感觉你应该使用.flatMap()withList.stream()操作,而不是特定的 lambda 表达式:
Set<Integer> citiesList = userDataList.stream()
.map(UserData::getCities)
.flatMap(List::stream)
.collect(Collectors.toSet());