分享-判断两个List中的元素是否相同,递归

zgd77521 2014-06-04 05:07:53
自己写了一个判断两个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;
}
}
...全文
689 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
westwall_029 2015-12-02
  • 打赏
  • 举报
回复
哦,我看错了了,原来你要求交集。。。
westwall_029 2015-12-02
  • 打赏
  • 举报
回复
list1.constainsAll(list2) && list2.constainsAll(list1)
lliiqiang 2014-06-05
  • 打赏
  • 举报
回复
只有双层循环,没有其它办法.
vnvlyp 2014-06-04
  • 打赏
  • 举报
回复
三楼的方法不错,直接明了,效率也不差 倒是根本不需要递归的你去递归,严重影响性能,而且代码清晰度真的差远了。。
iwaterman 2014-06-04
  • 打赏
  • 举报
回复
楼主的问题其实就是求两个集合的交集。 赞同3楼的做法。
zgd77521 2014-06-04
  • 打赏
  • 举报
回复
于金龙 2014-06-04
  • 打赏
  • 举报
回复
不妨试试这种方法:
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);
	}
异常异长 2014-06-04
  • 打赏
  • 举报
回复
disjoint public static boolean disjoint(Collection<?> c1, Collection<?> c2)如果两个指定 collection 中没有相同的元素,则返回 true。 如果将此方法用在不符合 Collection 常规协定的 collection 上,则必须小心。实现可以在任一 collection 上进行迭代,测试元素是否包含在另一个 collection 中(或执行任何等效的计算)。如果任一 collection 使用了一个非标准的相等性测试(比如顺序不是与 equals 一致的 SortedSet,或者 IdentityHashMap 的键集),则两个 collection 都必须使用相同的非标准相等性测试,否则此方法的结果是不确定的。 注意,允许在两个参数中传递相同的 collection,在这种情况下,当且仅当 collection 为空时此方法返回 true。 参数: c1 - 一个 collection c2 - 一个 collection 抛出: NullPointerException - 如果任一 collection 为 null
异常异长 2014-06-04
  • 打赏
  • 举报
回复
代码写得很乱遭

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧