已知資料:提供資料
1.List<Map<String, String>> inputData
2.List<某物體類> filter,包含一定資料,該物體類包括id和name兩個欄位
3.第一條的key對應id,value對應name
要求篩選出filter中有而inputData中沒有的資料,用stream流和lambda運算式操作
uj5u.com熱心網友回復:
給你段sample代碼吧public class Sample {
static class SomeEntity {
String id;
String name;
public SomeEntity(String id, String name) {this.id=id; this.name=name;}
public String toString() {return String.format("[id:%s, name:%s]", id, name);}
}
public static void main(String[] args) {
List<Map<String, String>> inputData = new ArrayList<>();
for (int i=0; i<10; i+=2) { //id=0,2,4,6,8
Map<String, String> m = new HashMap<>();
m.put("id-"+i, "name-"+i);
inputData.add(m);
}
List<SomeEntity> filter = new ArrayList<>();
for (int i=0; i<5; i++) { //id=0,1,2,3,4
filter.add(new SomeEntity("id-"+i, "name-" + i));
}
for (SomeEntity e : filter1(inputData, filter)) { //從filter中篩選出1,3
System.out.println(e);
}
for (Map<String, String> m : filter2(inputData, filter)) { //從inputData中篩選出6,8
System.out.println(m);
}
}
public static List<SomeEntity> filter1(List<Map<String, String>> inputData, List<SomeEntity> filter) {
return filter.stream().filter(e->
(inputData.stream().filter(in->
(in.containsKey(e.id) && in.get(e.id).equals(e.name))).count()==0)
).collect(Collectors.toList());
}
public static List<Map<String, String>> filter2(List<Map<String, String>> inputData, List<SomeEntity> filter) {
return inputData.stream().filter(in->
(filter.stream().filter(e->
(in.containsKey(e.id) && in.get(e.id).equals(e.name))).count()==0)
).collect(Collectors.toList());
}
}轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/201634.html
標籤:Java EE
上一篇:一個JAVA類和物件的題
