自己写了一个判断两个List中相同元素的方法,以前咱们普遍用的都是for循环,但是现在考虑到效率问题感觉那样确实有点繁琐,所以分享自己写的小代码,but下面这段代码执行的时候自己DeBug了一下,在return时,执行很多遍才return出去,不知道为什么?牛人帮忙解释一下吧。。。
public class Digui {
public static void main(String[] args) {
List<String> l1 = new ArrayList<String>();
List<String> l2 = new ArrayList<String>();
l1.add("1");
l1.add("2");
l1.add("3");
l1.add("4");
l1.add("5");
l1.add("6");
l2.add("3");
l2.add("5");
l2.add("7");
Digui d = new Digui();
List<String> l = d.bian(l1,l2);
System.out.println(l);
}
int i = 0;
int j = 0;
List<String> list = new ArrayList<String>();
public List<String> bian(List<String> list1,List<String> list2){
if(j==list2.size()){
j=0;
i++;
}
if(i==list1.size()){
return list;
}
if(list1.get(i).equals(list2.get(j))){
list.add(list1.get(i));
j++;
bian(list1,list2);
}else{
j++;
bian(list1,list2);
}
return list;
}
}
------解决方案--------------------
不妨试试这种方法:
public static void main(String[] args) {
List<String> l1 = new ArrayList<String>();
List<String> l2 = new ArrayList<String>();
l1.add("1");
l1.add("2");
l1.add("3");
l1.add("4");
l1.add("5");
l1.add("6");
l2.add("3");
l2.add("5");
l2.add("7");
List<String >l3=new ArrayList<String>(l1);
l3.removeAll(l2);
l1.removeAll(l3);
System.out.println(l1);
}