Stream通过实体多属性重新构建

需求背景:使用实体里的多个属性重新构建集合

模拟需求:已知Organization对象有orgCode、orgName两个属性,同为String类型,现有多个Organization对象构成的list对象,需使用上述两个属性重新构建一个泛型为String的Set集合。

本质是合并流FlatMap的使用。

List<Organization> a = new ArrayList<>();
        Organization organization1 = new Organization();
        organization1.setOrgName("aa");
        organization1.setOrgCode("bb");
        Organization organization2 = new Organization();
        organization2.setOrgName("cc");
        organization2.setOrgCode("dd");

        Organization organization3 = new Organization();
        organization3.setOrgName("tt");
        organization3.setOrgCode("bb");

        a.add(organization1);
        a.add(organization2);
        a.add(organization3);
        Set<String> set2 = a.stream().flatMap(o -> Stream.of(o.getOrgName(),o.getOrgCode())).collect(Collectors.toSet());
        set2.forEach(System.out::println);

输出为:

aa
bb
cc
dd
tt

符合预期