说到hashcode和equals不的不想到集合类的SET,set能清楚重复的东西。
假如:
public class People {
private String fistName;
private String lastName;
People(String fname,String lname){
this.fistName = fname;
this.lastName = lname;
}
}
你在hashSet时想根据姓名相同的为条件来去掉重复的,重写OBJECT类的hashcode和equals一定要写对了。
public class People {
private String fistName;
private String lastName;
People(String fname,String lname){
this.fistName = fname;
this.lastName = lname;
}
public int hashCode(){
return this.fistName.hashCode()*this.lastName.hashCode();
}
public boolean equals(Object o){
if( o instanceof People){
People p = (People)o;
if(this.fistName.equals(p.fistName)&&this.lastName.equals(p.lastName)){
return true;
}else{
return false;
}
}else{
return false;
}
}
}
当你要对一个类做比较的时候你的实现接口compareable,实现方法public int compareTo(People o)
分享到:
相关推荐
重写equals()、hashcode()和compareTo()方法是非常重要的,它可以使我们的程序更加高效、可靠和灵活。在实际开发中,我们需要根据具体情况来决定是否需要重写这些方法,并遵守相关的规则,以避免出现意想不到的结果...
要注意的是List,Set,Queue继承了Collection接口,...这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类,泛型、重写equals、hashCode
此外,Comparable接口的实现通常会影响类的 equals() 和 hashCode() 方法,因为它们之间的关系是:如果两个对象相等(根据 equals()),那么它们的 compareTo() 方法应该返回 0。而Comparator接口则不会影响对象的 ...
在使用Set集合时,需要掌握的一些小技巧,例如如何自动生成hashcode和equals方法,如何使用TreeSet的排序功能,如何使用LinkedHashSet的有序功能等。 总结 Set集合是JavaSE中的一种重要数据结构,包括HashSet、...
在Java编程语言中,对象的哈希码(Hash Code)和比较操作是处理集合和映射数据结构的...在处理集合和映射时,确保`equals()`和`hashCode()`的一致性以及根据需要选择适当的比较方法,可以提高代码的效率和可维护性。
·玩转集合框架迭代器和HashCode和Equals重新排序 实战 ·实战teratori迭代器和自定义Comparable:排序接口 ·玩转ava操作文件File类常用操作 ·案例实战IO流Input、Output Stream流 ·详细常见Object、Math、String...
在Java编程语言中,`hashCode()` 和 `equals()` 方法是两个非常重要的概念,它们主要用于对象的比较和哈希表操作。这两个方法在处理自定义类时尤其重要,因为它们直接影响到对象的比较逻辑和存储效率。 `hashCode()...
根据equals()和hashCode()的约定,如果两个对象相等,它们的hashcode也应相同,反之不成立。 最后,Comparable和Comparator接口用于排序。Comparable是对象本身实现的接口,通过覆盖compareTo()方法实现自然排序。...
当重写equals()方法时,务必同时重写hashCode()方法,以保持equals()和hashCode()的一致性。此外,要遵循以下原则: 1. 自反性:对于任何非null引用x,x.equals(x)应返回true。 2. 对称性:如果x.equals(y)返回true...
这是因为哈希表依赖`equals()`和`hashCode()`来确定对象是否相等,所以如果两个对象`equals()`相等,它们的`hashCode()`也应相等。 2.1. `equals()`重写的规范 - 使用Objects类的静态方法,如`Objects.equals(a, ...
在Java或其他面向对象的语言中,实现复杂对象的比较是一项重要任务,它通常涉及`equals()`方法和`hashCode()`方法的重写。 **1. `equals()`方法** `equals()`方法是Object类的一个成员方法,用于比较两个对象是否...
这涉及到对象的平等性和引用的平等性,以及如何正确地实现`equals()`和`hashCode()`方法。本篇文章将深入探讨Java中"相等"比较的各个方面,旨在帮助开发者理解和掌握这一核心知识。 首先,Java中的"相等"比较分为两...
HashSet基于哈希表,无序且唯一,通过hashCode和equals方法保证元素唯一性。TreeSet内部实现为红黑树,元素自动排序,而LinkedHashSet则保持插入顺序。 3. Map接口:Map用于存储键值对,HashMap、HashTable、...
### SCJP Sun® Certified Programmer for Java™ 6 Study...此外,了解如何正确地重写`equals()`和`hashCode()`方法,以及如何利用Java集合框架提供的功能进行高效的数据管理和操作,对于提高软件质量和性能至关重要。
- `Comparable`接口用于实现对象的自然排序,`equals()`和`hashCode()`方法用于比较和哈希存储,是确保集合中元素唯一性的重要方法。 在使用类集框架时,泛型的使用能提高类型安全性,避免类型转换异常。同时,...
* HashCode Equals 的原理和算法 2. JAVA 垃圾回收机制 3. 设计模式 * 迭代器模式(Iterator) * 享元模式(Flyweight) 二、多线程 1. 多线程通讯机制 * 不使用 WAIT 和 NOTIFY 的方式 * 线程锁的机制和 ...
- 实现`equals()`和`hashCode()`方法时,应该遵循约定:如果两个对象相等(`equals()`返回`true`),它们的`hashCode()`必须相同;但是,`hashCode()`相同并不意味着`equals()`也相同。 - 使用`Set`时,要确保对象...
HashMap以其高效和非同步特性被广泛使用,其元素通过key的hashCode和equals保证唯一性,而TreeMap则提供了按key排序的功能,要求key实现Comparable接口。 在实际使用中,如需创建HashMap,可以通过以下方式: ```...
标题 "JDBC_sorting_Comparing_" 暗示了这个主题是关于在Java环境中使用JDBC(Java Database Connectivity)进行数据排序,并且涉及到对象的`equals`和`hashCode`方法的重写。`equals`和`hashCode`方法是Java中的...
通常,`equals`方法会配合`hashCode`方法一起重写,以满足`equals`和`hashCode`的合同。在`TwoTuple, T2>`类中,`equals`方法应该比较两个元组的`T1`和`T2`部分是否分别相等: ```java @Override public boolean ...