【问题标题】:How to convert List of list to Hashset in Java using Lambda [duplicate]如何使用 Lambda 将列表列表转换为 Java 中的 Hashset [重复]
【发布时间】:2021-08-30 02:26:51
【问题描述】:

我有一个包含用户数据的类。

public class UserData {
    @JsonProperty("uid")
    private String userId;

    @JsonProperty("cities")
    private List<Integer> cities;

}

List&lt;UserData&gt;,我想提取所有独特的城市。改变,我正在为此做,

Set<Integer> citiesList = new HashSet<>();

for (UserData userData : userDataList)
       citiesList.addAll(userData.getCities());

这些变化的lambda 表达式可能是什么?

任何帮助将不胜感激。

【问题讨论】:

  • 我不确定 lambda 表达式如何适合其中。除非你的意思是你想使用流来做到这一点?

标签: java lambda


【解决方案1】:

如果要确定返回的SetHashSet,则必须使用Collectors.toCollection(HashSet::new),如下所示:

userDataList.stream().map(d -> d.getCities())
      .flatMap(d -> d.stream())
      .collect(Collectors.toCollection(HashSet::new));

【讨论】:

    【解决方案2】:

    感觉你应该使用 .flatMap()List.stream() 操作,而不是特定的 lambda 表达式:

    Set<Integer> citiesList = userDataList.stream()
      .map(UserData::getCities)
      .flatMap(List::stream)
      .collect(Collectors.toSet());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-23
      • 2017-01-07
      • 2018-08-08
      • 2014-09-28
      相关资源
      最近更新 更多