有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将项从集合<CustomObject>中获取到其属性列表中的最佳方法是什么

我有一个关于在Collection中查找某些项的问题,例如Set

给定一个类:

private class User{
    Set<String> names = new HashSet<>();

    User(Set<String> name){
        this.names = name;
    }

    public Set<String> getNames() {
        return names;
    }
}

该代码:

Set<String> firstSetInside = new HashSet<>();
firstSetInside.add("someName1");
firstSetInside.add("someName2");

Set<String> secondSetInside = new HashSet<>();
secondSetInside.add("someName1");
secondSetInside.add("someName2");

User user = new User(firstSetInside);
User user2 = new User(secondSetInside);

Set<User> userSet = new HashSet<>();
userSet.add(user);
userSet.add(user2);

如何将所有名称"someNameX"正确地放到一个列表中

我知道我应该使用lambdas,但如何正确使用它


共 (1) 个答案

  1. # 1 楼答案

    要从userSet中的所有User获取所有名称的具体列表,可以使用:

    List<String> allNames = new ArrayList<>();
    userSet.stream().map(User::getNames).forEach(allNames::addAll);
    

    编辑两年半后):-多亏一位落选的选民在很长一段时间后把我带回这里。这让我意识到我当时的回答是多么愚蠢。当然,处理这种情况的一种非常实用的方法是使用flatMap作为:

    List<String> allNames = userSet.stream()
                                   .flatMap(user -> user.getNames().stream())
                                   .collect(Collectors.toList());