ArrayList的equals方法

比较的是list的对象,比如:

ArrayList<String> list1 = new ArrayList<>();
list1.add("我爱你");
Vector<String> list2 = new Vector<>();
list2.add("我爱你");
System.out.println(list1.equals(list2));
//true

查看equals方法,发现比较的是list里面的元素,将元素进行对比,完全一样就返回true

public boolean equals(Object o) {
    if (o == this)
        return true;
    if (!(o instanceof List))
        return false;
    ListIterator<E> e1 = listIterator();
    ListIterator<?> e2 = ((List<?>) o).listIterator();
    while (e1.hasNext() && e2.hasNext()) {
        E o1 = e1.next();
        Object o2 = e2.next();
        if (!(o1==null ? o2==null : o1.equals(o2)))
            return false;
    }
    return !(e1.hasNext() || e2.hasNext());
}

个人觉得需要优化的,循环遍历之前,先判断两个list长度是否一致,不一致直接返回false会更好。

Last modification:October 31st, 2019 at 11:09 am
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment