根据2个元素取出list1中不在list2中的元素
public class Person {
private Integer id;
private String name;
private Integer age;
}
public static void main(String[] args) {
Person person1 = new Person();
person1.setId(1);
person1.setName("name1");
Person person2 = new Person();
person2.setId(2);
person2.setName("name2");
Person person3 = new Person();
person3.setId(3);
person3.setName("name3");
Person person4 = new Person();
person4.setId(4);
person4.setName("name4");
List<Person> list1 = new ArrayList<>();
list1.add(person1);
list1.add(person2);
list1.add(person3);
list1.add(person4);
Person person5 = new Person();
person5.setId(2);
person5.setName("name2");
Person person6 = new Person();
person6.setId(3);
person6.setName("name3");
Person person7 = new Person();
person7.setId(7);
person7.setName("name7");
List<Person> list2 = new ArrayList<>();
list2.add(person5);
list2.add(person6);
List<Person> notInList2 =
list1.stream().filter(l1 -> !list2.stream().map(l2 -> l2.getId() + "&" + l2.getName()).collect(Collectors.toList())
.contains(l1.getId() + "&" + l1.getName())
).collect(Collectors.toList());
System.out.println(notInList2);
}
2个list,根据属性取交集、差集
public static void main(String[] args) {
List<Customer> list = new ArrayList<>();
Customer customer = new Customer();
customer.setId(1);
customer.setName("1");
list.add(customer);
customer = new Customer();
customer.setId(2);
customer.setName("2");
list.add(customer);
customer = new Customer();
customer.setId(3);
customer.setName("3");
list.add(customer);
customer = new Customer();
customer.setId(4);
customer.setName("4");
list.add(customer);
customer = new Customer();
customer.setId(5);
customer.setName("5");
list.add(customer);
List<Integer> integers = new ArrayList<>();
integers.add(1);
integers.add(4);
integers.add(5);
integers.add(6);
integers.add(7);
List<Integer> integerss = integers.stream().filter(integer ->
!list.stream().map(Customer::getId).collect(Collectors.toList()).contains(integer))
.collect(Collectors.toList());
System.out.println(integerss);
List<Customer> listw = list.stream().filter(customer1 -> !integers.contains(customer1.getId())).collect(Collectors.toList());
System.out.println(listw);
List<Integer> integerss2 = integers.stream().filter(integer ->
list.stream().map(Customer::getId).collect(Collectors.toList()).contains(integer))
.collect(Collectors.toList());
System.out.println(integerss2);
List<Customer> listw2 = list.stream().filter(customer1 -> integers.contains(customer1.getId())).collect(Collectors.toList());
System.out.println(listw2);
}