之前没有了解过这个方法,初次在项目中看到它的时候还以为是在比较两个List的地址,后来看了源码才知道了这个方法的作用。

首先看一个例子:

public class Test{public static void main(String[] args){ArrayList<String> str1 = new ArrayList<String>();str1.add("123");ArrayList<String> str2 = new ArrayList<String>();str2.add("123");System.out.println(str1.equals(str2));}
}

程序输出结果为True。很显然List重写了equals方法。
ArrayList、Vector两者都实现了List接口、继承AbstractList抽象类,其equals方法是在AbstractList类中定义的,源代码如下:

public boolean equals(Object o) {    if (o == this)        return true;    // 判断是否是List列表,只要实现了List接口就是List列表if (!(o instanceof List))        return false;    // 遍历list所有元素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的equals方法并不关心List的具体实现类,只要是实现了List接口,并且所有元素相等、长度也相等的话就表明两个List是相等的。

在比较两个对象是否相同时使用的equals方法,所以对象需要重写equals方法和hashCode方法。String已经重写了equals和hashCode方法,所以例子中才会返回true。

List的equals方法学习相关推荐

  1. JavaSE学习总结(八)常用类(上)Object类==与equals方法的区别浅克隆的特点Scanner类String类String两种创建对象方式的区别String类的各种功能

    JavaSE学习总结(八)常用类(上)/Object类/==与equals方法的区别/浅克隆的特点/Scanner类/String类/String两种创建对象方式的区别/String类的各种功能 常用 ...

  2. 【宋红康学习日记11】Object类与equals方法

    1 == (1)当对象是基本数据类型时,比较值: (2)当对象是引用型时,比较的是地址值!!1 2 equals():只处理引用型数据:Object类中的equals方法依然比较的是地址值! 但在St ...

  3. Java基础学习总结(1)——equals方法

    2019独角兽企业重金招聘Python工程师标准>>> 一.equals方法介绍 1.1.通过下面的例子掌握equals的用法 1 package cn.galc.test; 2 3 ...

  4. 《Java 核心技术卷1 第10版》学习笔记------Object类的 equals 方法

    Object 简述 Object 类是 Java 中所有类的始祖, 在 Java 中每个类都是由它扩展而来的. 在 Java 中, 只有基本类型 ( primitive types) 不是对象, 例如 ...

  5. Java培训教程:”==“和 equals 方法究竟有什么区别?

    在学习java技术过程中,我们会接触到一些变量值的相关知识,本期小编为大家介绍的教程就是关于"=="和 equals 方法究竟有什么区别?来看看下面的详细介绍. Java培训教程: ...

  6. 为什么阿里巴巴禁止使用BigDecimal的equals方法做等值比较?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! BigDecimal,相信对于很多人来说都不陌生,很多人都 ...

  7. 为什么使用HashMap需要重写hashcode和equals方法_为什么要重写 hashcode 和 equals 方法?...

    1. 通过Hash算法来了解HashMap对象的高效性 2. 为什么要重写equals和hashCode方法 3. 对面试问题的说明 <Java 2019 超神之路> <Dubbo ...

  8. hashcode相等的两个对象一定相等吗_为什么重写 equals方法时一定要重写hashCode方法?...

    推荐阅读: 一线架构师总结SpringBoot,Cloud,Nginx与Docker,不信你搞不懂 47天洒热血复习,我终于"挤进"了字节跳动(附面经+学习笔记) 五年时间,从蘑菇 ...

  9. Equals方法与==运算符的使用

    为提高代码的执行效率,最近又学习了一下.NET的基础知识,现就发表一下个人理解,有不对之处还望各位指正. C#中的类型分为两种:值类型和引用类型.在处理程序中,不管是值类型还是引用类型,就Equals ...

最新文章

  1. 126. 最大的和【思维 前缀和】
  2. 【struts2】文件上传下载—struts2实现
  3. Python 黑帽子第二章运行截图
  4. sql 删除字段中下划线_SQL基础教程知识点总结
  5. ui测试怎么做?依据文档有哪些_微信小程序开发流程有哪些?各个环节注意事项...
  6. Redis 基础——五大类型与数据结构
  7. linux判断改行符_Linux判断符如何使用?
  8. B2C网站运营核心数据分析模型
  9. mod_signalwire.c:371 Curl Result 1, Error: Protocol https not supported
  10. 凸优化第四章凸优化问题 4.7向量优化
  11. 钢铁雄心II HOI2 作弊码合辑
  12. 网络信息安全攻防实验室 脚本关第二关
  13. matlab xticklabel 旋转,在Matlab中,如何实现xticklabel的旋转?转
  14. 涨握在线|欧或重启QE;英市港市合并!
  15. meta标签属性及其功能
  16. [受限玻尔兹曼机] 原理、求解过程推导、深度信念网络
  17. 华为设备配置Smart Link负载分担
  18. java ant解压缩_java ant包中的org.apache.tools.zip实现压缩和解压缩实例详解
  19. Springboot注解@ServletComponentScan和@ComponentScan
  20. JS中childNodes,firstChild,firstElementChild和children使用分析

热门文章

  1. 手把手系列之十七——手把手教你做蛋挞
  2. 可以跨专业保研计算机吗,保研夏令营能跨专业吗?各位前辈,有没有跨专业保研的途径...
  3. 使用python提取华为交换机的接口IP信息保存到excel中(ensp模拟器)
  4. leetocde 518 零钱兑换II
  5. charCodeAt与fromCharCode
  6. word文档的公式编号方法(笔记)
  7. 荣耀10 升级GPU Turbo后上手体验,玩游戏流畅到飞起!
  8. 动态修改浏览器图标和标题
  9. ubuntu16打实时补丁
  10. java automapper 使用_AutoMapper使用