从list1集合中过滤list2中age属性值相同的数据
package com.gisquest.platform.rest.api.rolemgr;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
public class test {
public static void main(String[] args) {
List<Map<String,Object>> list1 = new ArrayList<Map<String,Object>>();
Map<String,Object> map1 = new HashMap<String,Object>();
map1.put("name", "111");
map1.put("age", "21");
Map<String,Object> map2 = new HashMap<String,Object>();
map2.put("name", "222");
map2.put("age", "22");
Map<String,Object> map3 = new HashMap<String,Object>();
map3.put("name", "333");
map3.put("age", "23");
Map<String,Object> map4 = new HashMap<String,Object>();
map4.put("name", "444");
map4.put("age", "24");
list1.add(map1);
list1.add(map2);
list1.add(map3);
list1.add(map4);
List<Map<String,Object>> list2 = new ArrayList<Map<String,Object>>();
Map<String,Object> map11 = new HashMap<String,Object>();
map11.put("name", "111");
map11.put("age", "21");
Map<String,Object> map22 = new HashMap<String,Object>();
map22.put("name", "222");
map22.put("age", "22");
list2.add(map11);
list2.add(map22);
//过滤两个list中相同的属性值的数据
List<Map<String,Object>> list3 = list1.stream().parallel().filter(a -> list2.stream()
.noneMatch(b-> Objects.equals(a.get("age"), b.get("age")))).collect(Collectors.toList());
System.out.println(list3);
}
}
测试结果:list1集合中和list2集合中相同年龄的数据被过滤了
[{name=333, age=23}, {name=444, age=24}]
从list1集合中过滤list2中age属性值不相同的数据
package com.gisquest.platform.rest.api.rolemgr;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
public class test {
public static void main(String[] args) {
List<Map<String,Object>> list1 = new ArrayList<Map<String,Object>>();
Map<String,Object> map1 = new HashMap<String,Object>();
map1.put("name", "111");
map1.put("age", "21");
Map<String,Object> map2 = new HashMap<String,Object>();
map2.put("name", "222");
map2.put("age", "22");
Map<String,Object> map3 = new HashMap<String,Object>();
map3.put("name", "333");
map3.put("age", "23");
Map<String,Object> map4 = new HashMap<String,Object>();
map4.put("name", "444");
map4.put("age", "24");
list1.add(map1);
list1.add(map2);
list1.add(map3);
list1.add(map4);
List<Map<String,Object>> list2 = new ArrayList<Map<String,Object>>();
Map<String,Object> map11 = new HashMap<String,Object>();
map11.put("name", "111");
map11.put("age", "21");
Map<String,Object> map22 = new HashMap<String,Object>();
map22.put("name", "222");
map22.put("age", "22");
list2.add(map11);
list2.add(map22);
//过滤两个list中相同的属性值的数据
List<Map<String,Object>> list3 = list1.stream().parallel().filter(a -> list2.stream()
.anyMatch(b-> Objects.equals(a.get("age"), b.get("age")))).collect(Collectors.toList());
System.out.println(list3);
}
}
测试结果:list1中age和list2中age不相同的数据被过滤
[{name=111, age=21}, {name=222, age=22}]
版权声明:本文为adisMadman原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。