【JAVA8】求怎么用stream操作将列表中实体的某个属性单独拿出来

List doItemList

用doItemList.stream().???????????

实体里有个name属性,我要单独拿出来,怎么写,我想要的结果是Set set;

题外话,如果我放的是list不是set,怎么去重,如果还要过滤掉比如叫“老王”这个名字呢

 import java.util.*;
import java.util.stream.*;

class Untitled {


    public static void main(String[] args) {
        ArrayList<A> doItemList = new ArrayList<A>();
        doItemList.add(new A("a", 1));
        doItemList.add(new A("b", 2));
        doItemList.add(new A("a", 3));
        Map<String, List<A>> result = doItemList.stream().collect(  
                    Collectors.groupingBy(  
                            x -> x.name));
        for (String s : result.keySet())
            System.out.println(s);
    }
}

class A
{
    public String name;
    public int age;
    public A(String s, int n) { name = s; age = n; }
}

结果
a
b

过滤老王:

 import java.util.*;
import java.util.stream.*;

class Untitled {


    public static void main(String[] args) {
        ArrayList<A> doItemList = new ArrayList<A>();
        doItemList.add(new A("a", 1));
        doItemList.add(new A("b", 2));
        doItemList.add(new A("a", 3));
        doItemList.add(new A("老王", 3));
        Map<String, List<A>> result = doItemList.stream().filter(x -> !x.name.equals("老王")).collect( 
                    Collectors.groupingBy(x -> x.name));
        for (String s : result.keySet())
            System.out.println(s);
    }
}

class A
{
    public String name;
    public int age;
    public A(String s, int n) { name = s; age = n; }
}

昨天的问题不知道你搞清楚了没有,如果有疑问,请追问,如果问题解决,麻烦点下我回答右边的采纳,谢谢。