如何判断两个list相等

新手上路,请多包涵

1.怎么判断两个list相等,有什么方法?

    //比如这两个list
    List<Integer> list = new ArrayList<>();      
    list.add(1);
    list.add(2);
    list.add(3);
    List<Integer> listOne = new ArrayList<>();
    listOne.add(3);
    listOne.add(2);
    listOne.add(1);

2.我能想到的解决方法就是自己写equals

    public static boolean equals(List<Integer> listOne,List<Integer> listTwo) {
        if(listOne ==null || listTwo == null){
            return false;
        }
        int length = listOne.size();
        int count = 0;
        for(Integer a : listOne){
            if(listTwo.contains(a)){
                count +=1;
            }
        }
        if(count == length){
            return true;
        }
        return false;
    }

3.还有没有更好的解决方法?

阅读 8.4k
4 个回答

如果要判断两个数组完全相等(即List元素的顺序也一致),可以用
ListUtils.isEqualList(Collection<?> list1, Collection<?> list2)
import org.apache.commons.collections4.ListUtils;

如果按楼主的需求,我可能会这么写

        List<Integer> list1 =  Lists.newArrayList();
        list1.add(1);
        list1.add(2);
        list1.add(3);
        List<Integer> list2 =  Lists.newArrayList();
        list1.add(3);
        list1.add(2);
        list1.add(1);
        
        if(list1 == null && list2 == null){
            return true;
        }
        
        if(list1 != null && list1.containsAll(list2) && 
         list2 != null && list2.containsAll(list1)){
            return  true;
        }else {
            return false;
        }

你这个equals方法可以判断两个list相等。

如何判断两个list相等。 这里的“相等”本身就是你自己的定义。 没有更好的解决办法。

新手上路,请多包涵

1 就看你如何定义相等,是否重写equals不重要 2你的equals似乎有些问题,123 111,猜测你的定义里应该不等吧?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题