自己免费怎么做网站,网站做系统叫什么名字,抖音开放平台是干什么的,安徽网站推广营销设计文章目录 背景案例代码 背景
原因是需要从表里查多个集合list#xff0c;然后取多个集合得交集#xff0c;并且元素是对象#xff0c;所以使用了下面的方式#xff0c;当然方式有很多种#xff0c;仅供参考。
案例
下面提供了一段多个集合join取交集的例子#xff0c;… 文章目录 背景案例代码 背景
原因是需要从表里查多个集合list然后取多个集合得交集并且元素是对象所以使用了下面的方式当然方式有很多种仅供参考。
案例
下面提供了一段多个集合join取交集的例子代码中采用List为集合Teacher为元素。
package stream;import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;/*** 求多个ListObject集合的交集** author happy* since 2023-06-27*/
public class DistinctEntityByStream {public static void main(String[] args) {getDistinctList();}private static void getDistinctList() {ListTeacher list new ArrayList();list.add(new Teacher(10, zhang, 24));list.add(new Teacher(10, zhang, 24));list.add(new Teacher(10, zhang, 24));list.add(new Teacher(10, zhang, 24));list.add(new Teacher(5, zhang2, 34));list.add(new Teacher(6, zhang3, 26));list.add(new Teacher(6, zhang3, 26));list.add(new Teacher(6, zhang3, 26));list.add(new Teacher(6, zhang3, 26));list.add(new Teacher(7, zhang4, 24));list.add(new Teacher(7, zhang4, 24));ListTeacher teacherList list.stream().filter(one - Collections.frequency(list, one) 4).filter(distinctByKey(Teacher::getId)).sorted(Comparator.comparing(Teacher::getId)).collect(Collectors.toList());teacherList.forEach(System.out::println);}private static T PredicateT distinctByKey(Function? super T, ? keyExtractor) {ConcurrentHashMapObject, Boolean seen new ConcurrentHashMap();return t - seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) null;}public static class Teacher {private Integer id;private String name;private Integer age;public Teacher(Integer id, String name, Integer age) {this.id id;this.name name;this.age age;}public Integer getId() {return id;}public void setId(Integer id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}Overridepublic boolean equals(Object o) {if (this o) return true;if (o null || getClass() ! o.getClass()) return false;Teacher teacher (Teacher) o;return Objects.equals(id, teacher.id) Objects.equals(name, teacher.name) Objects.equals(age, teacher.age);}Overridepublic int hashCode() {return Objects.hash(id, name, age);}Overridepublic String toString() {return Teacher{ id id , name name \ , age age };}}}
上面代码在idea中运行结果
Teacher{id6, namezhang3, age26}
Teacher{id10, namezhang, age24}
代码
代码地址