凡科建设网站安全吗,企业做网站的目的是什么,区域教育联盟网站建设,网站建设大忌2019独角兽企业重金招聘Python工程师标准 面试中经常被问到的list如何去重#xff0c;用来考察你对list数据结构#xff0c;以及相关方法的掌握#xff0c;体现你的java基础学的是否牢固。 我们大家都知道#xff0c;set集合的特点就是没有重复的元素。如果集… 2019独角兽企业重金招聘Python工程师标准 面试中经常被问到的list如何去重用来考察你对list数据结构以及相关方法的掌握体现你的java基础学的是否牢固。 我们大家都知道set集合的特点就是没有重复的元素。如果集合中的数据类型是基本数据类型可以直接将list集合转换成set就会自动去除重复的元素这个就相对比较简单。 如下示例 输出结果为 我们可以看到去重成功了。 在面试中被问到list去重问题大部分回答都会是list和set互转利用set自动去除重复属性的方法去重但是这样的回答并不会得分。 当list集合中存储的类型是对象类型的时候我们就不能简单的只把list集合转换成set集合。 我们定义一个对象类 我们使用上面的set去重的方法去重 运行后输出的结果为 我们可以看到第二个张三和最后一个张三信息都一样却没有被去重。 当list集合中存储的是对象时我们需要在对象的实体类中去重写equals()方法和hashCode()方法如下 此时运行上面的test方法去重就成功了。 最后我们拿出String中的equals()方法和hashCode()方法源码来加深认识 equals() 比较两个对象时首先先去判断两个对象是否具有相同的地址如果是同一个对象的引用则直接放回true如果地址不一样则证明不是引用同一个对象接下来就是挨个去比较两个字符串对象的内容是否一致完全相等返回true否则false。 hashCode() hashCode()官方定义 hashcode方法返回该对象的哈希码值。支持该方法是为哈希表提供一些优点例如java.util.Hashtable 提供的哈希表。 hashCode 的常规协定是 在 Java 应用程序执行期间在同一对象上多次调用 hashCode 方法时必须一致地返回相同的整数前提是对象上 equals 比较中所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行该整数无需保持一致。 如果根据 equals(Object) 方法两个对象是相等的那么在两个对象中的每个对象上调用 hashCode 方法都必须生成相同的整数结果。 以下情况不是必需的如果根据 equals(java.lang.Object) 方法两个对象不相等那么在两个对象中的任一对象上调用 hashCode 方法必定会生成不同的整数结果。但是程序员应该知道为不相等的对象生成不同整数结果可以提高哈希表的性能。 实际上由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。这一般是通过将该对象的内部地址转换成一个整数来实现的但是 JavaTM 编程语言不需要这种实现技巧。 当equals方法被重写时通常有必要重写 hashCode 方法以维护 hashCode 方法的常规协定该协定声明相等对象必须具有相等的哈希码。 当然List去重的方法很多可以用for循环或者使用java8新特性stream等等欢迎讨论 扩展阅读 JavaScript数组去重12种方法史上最全 初学者应该了解的数据结构Array、HashMap 与 List Maven 的这 7 个问题你思考过没有 Redis 的各项功能解决了哪些问题 深入分析 ThreadLocal 内存泄漏问题 详解 equals() 方法和 hashCode() 方法 来源https://mp.weixin.qq.com/s/AAeaY1-0xclmMKBXp7XVUA 转载于:https://my.oschina.net/javafirst/blog/3043322