基础做法:两个for循环比较
public class ForEachTest {
public static void main(String[] args) throws ParseException {
List<String> list3=new ArrayList<>();
List<String> list1=new ArrayList<>();
list1.add("xiaozhou");
list1.add("xiaolei");
list1.add("xiaoqi");
List<String> list2=new ArrayList<>();
list2.add("xiaosai");
list2.add("xiaozhou");
list2.add("xiaoqi");
for(String l1:list1){
for(String l2:list2){
if(l1.equals(l2)){
list3.add(l1);
}
}
}
System.out.println(list3);
}
}
优化解法:利用stream
public class ForEachTest {
public static void main(String[] args) throws ParseException {
List<String> list3=new ArrayList<>();
List<String> list1=new ArrayList<>();
list1.add("xiaozhou");
list1.add("xiaolei");
list1.add("xiaoqi");
List<String> list2=new ArrayList<>();
list2.add("xiaosai");
list2.add("xiaozhou");
list2.add("xiaoqi");
list3=list1.stream().filter(list2::contains).collect(Collectors.toList());
System.out.println(list3);
}
}
在这个地方有引申的知识点:
String s=list1.stream().filter(list2::contains).findAny().orElse("c");
一般情况下,当使用findAny()或findFirst()时,会在后面跟着orElse,这是为了防止空指针。