交集 并集 差集
交集(listA ∩ ListB): List<Person> listC = listA.stream().filter(item -> listB.contains(item)).collect(Collectors.toList()); listC中的元素有:属性name值为 aa, bb, cc 的对象。 并集(listA ∪ listB): //先合体 listA.addAll(listB); //再去重 List<Person> listC = listA.stream().distinct().collect(Collectors.toList()); listC中的元素有:属性name值为 aa, bb, cc ,dd的对象。 差集(listA - listB): List<Person> listC = listA.stream().filter(item -> !listB.contains(item)).collect(Collectors.toList()); listC中的元素有:属性name值为 dd的对象。
List集合的过滤之lambda表达式
stmtList = stmtList.stream().filter(stmt -> !(stmt instanceof OracleInsertStatement) && stmt.getParent() == null).collect(Collectors.toList());
lambda表达式将List对象某个字段转换以逗号分隔的String类型
// 获取 users 集合中的 id 集合 List<Long> ids = users.stream().map(User::getId).collect(Collectors.toList()); System.out.println("ids: " + ids); System.out.println(); // 获取 users 集合中的 id 集合并转为字符串, 通过 , 拼接p String idsTxt = users.stream().map(User::getId).map(String::valueOf).collect(Collectors.joining(",")); System.out.println("idsTxt: " + idsTxt); System.out.println(); List<String> names = users.stream().map(User::getName).collect(Collectors.toList()); System.out.println("names: " + names);