I want to iterate two lists and get new filtered list which will have values not present in second list. Can anyone help?
I have two lists - one is list of strings, and the other is list of MyClass objects.
List list1;
List list2;
MyClass {
MyClass(String val)
{
this.str = val;
}
String str;
...
...
}
I want filtered list of strings based on -> check second list for elements (abc) whose values not present in list1.
List list1 = Arrays.asList("abc", "xyz", "lmn");
List list2 = new ArrayList();
MyClass obj = new MyClass("abc");
list2.add(obj);
obj = new MyClass("xyz");
list2.add(obj);
Now I want new filtered list -> which will have value => "lmn". i.e. values not present in list2 whose elements are in list1.
解决方案
this can be achieved using below...
List unavailable = list1.stream()
.filter(e -> !list2.contains(e))
.collect(Collectors.toList());