`

hashcode equal方法

 
阅读更多
import java.util.ArrayList; 

02 import java.util.HashSet; 

03 import java.util.List; 

04 import java.util.Set; 

05   

06 /** 

07  * 编写者:CP 

08  * 编写日期:2011-9-7 

09  * <br />类描述:set集合针对String 类型和8大基础数据类型  过滤掉重复数据,如果存放的是其他类型对象,则需要重写hashCode方法和equals方法,当equals 比较相等时,则会去比较hashCode值 hashCode的值 如果一致的话,则不会存进set 

10  */

11 public class SetDemo { 

12       

13     public static void main(String[] args) { 

14         Set<String> nameSet = new HashSet<String>(); 

15         nameSet.add("张三"); 

16         nameSet.add("李四"); 

17         nameSet.add("王五"); 

18         nameSet.add("张三"); 

19           

20         // 输出结果 张三  李四  王五 

21         for(String name : nameSet){ 

22             System.out.print(name + "\t"); 

23         } 

24         // List集合去除重复基础数据 

25         List<String> nameList = new ArrayList<String>(); 

26         nameList.add("张三"); 

27         nameList.add("李四"); 

28         nameList.add("王五"); 

29         nameList.add("赵六"); 

30         nameSet.addAll(nameList); 

31           

32         // 输出结果 张三  李四  王五  赵六 

33         for(String name : nameSet){ 

34             System.out.print(name + "\t"); 

35         } 

36           

37         // 去除编号和用户名一样的 对象,需要重写 equals 方法 和 hashCode方法 

38         User admin = new User(1, "admin"); 

39         User user = new User(2, "user"); 

40         User user1 = new User(2, "user"); 

41         User admin1 = new User(3, "admin"); 

42           

43           

44         Set<User> userSet = new HashSet<User>(); 

45         userSet.add(admin); 

46         userSet.add(user); 

47         userSet.add(admin1); 

48         userSet.add(user1); 

49         // 输入结果 admin1  admin3  user2 

50         for(User u : userSet){ 

51             System.out.print(u.username + u.id + "\t"); 

52         } 

53           

54         System.out.println(user.equals(null)); 

55     } 

56 } 

57   

58 class User{ 

59       

60     protected Integer id; 

61       

62     protected String username; 

63       

64     public User(Integer id, String username){ 

65         this.id = id; 

66         this.username = username; 

67     } 

68   

69   

70     /** 

71      * 如果对象类型是User 的话 则返回true 去比较hashCode值 

72      */

73     @Override

74     public boolean equals(Object obj) { 

75         if(obj == null) return false; 

76         if(this == obj) return true; 

77         if(obj instanceof User){  

78             User user =(User)obj; 

79 //          if(user.id = this.id) return true; // 只比较id 

80             // 比较id和username 一致时才返回true 之后再去比较 hashCode 

81             if(user.id == this.id && user.username.equals(this.username)) return true; 

82             } 

83         return false; 

84     } 

85   

class Student
{
int num;
String name;
Student(int num,String name)
{
            this.num=num;
            this.name=name;
}
public int hashCode()
{
            return num*name.hashCode();
}
public boolean equals(Object o)
{
            Student s=(Student)o;
            return num==s.num && name.equals(s.name);
}
public String toString()
{
            return num+":"+name;
}
}
分享到:
评论

相关推荐

    java中hashcode()和equals()方法详解

    ### Java中`hashCode()`与`equals()`方法详解 #### 前言 在Java编程语言中,`hashCode()`和`equals()`方法是非常重要的概念,它们不仅对于深入理解Java内存管理至关重要,也是实现自定义类的关键部分之一。本文将...

    关于hashCode()和equals()的本质区别和联系

    这种基于值的 Equal 方法可以由 Java 类库中的所有原始封装类使用。 为什么忽略 equals() 和 hashCode() 会带来问题 如果我们忽略 equals() 和 hashCode() 方法,那么我们将不能可靠地检索相关的值,除非我们在 ...

    Java中hashCode和equals方法的正确使用

    在这篇文章中,我将告诉大家我对hashCode和equals方法的理解。我将讨论他们的默认实现,以及如何正确的重写他们。我也将使用Apache Commons提供的工具包做一个实现。  hashCode()和equals()定义在Object类中,这...

    【面试】hashCode与equals两者之间的关系 / == 和equals / 为什么要重写equals方法 / 重写equals /hashcode方法 / 为什么要重写hashCode方法

    【面试】中提到的几个关键知识点集中在对象比较、equals()和hashCode()方法的使用以及它们之间的关系上。这些概念在Java编程中至关重要,特别是在处理集合类和比较对象时。 1、**hashCode与equals两者之间的关系**...

    Java中的hashcode方法介绍

    Java中的`hashCode`方法是Java编程语言中的一个重要概念,它主要与对象的散列处理相关。在Java的`Object`类中定义了一个本地方法(native)`hashCode()`,该方法返回一个`int`类型的数值。这个数值是根据对象的状态...

    string-hashcode:java.lang.String.hashCode

    字符串哈希码 字符串的其他实用程序。... equal ( code , code2 ) ;原料药hashCode(str)参数: str:字符串对象返回: 编号:哈希码返回字符串的哈希码。 请注意,哈希码对于特定字符串是不可变的。执照麻省理工学院

    javaee_tedu_day09.zip

    ATM系统 Clone方法 toString方法:表示返回对象的字符串表示形式 包名.类名@hashCode(内存地址) 打印对象时,默认调用 如果不是想使用object类,toString...如果equal返回true的话,hashCode相同,重写hashCode方法

    面试官瞬间就饱了,重写equals函数,需要重写hashCode函数吗?

    在Java编程语言中,`equals()` 和 `hashCode()` 方法是对象的基本组成部分,它们与对象的比较和哈希表(如 `HashMap`)的操作密切相关。在面试中,面试官提出的问题直指这两个方法的重要关联。 首先,`equals()` ...

    Findbugs缺陷等级对照表.pdf

    * 43B:类中定义了 hashCode() 方法,但是没有重写 java.lang.Object 中的 hashCode() 方法 * 44C:类中定义了 tostring() 方法,但是没有重写 java.lang.Object 中的 tostring() 方法 * 45C:某些方法名只有大小写...

    Java equals 方法与hashcode 方法的深入解析

    PS:本文使用jdk1.7解析1.Object类 的equals 方法 代码如下: /** * Indicates whether some other object is “equal to” this one. *  * The {@code equals} method implements an equivalence relation * on ...

    Java中equals()与hashCode()的原理与设计

     2、为什么改写equals()的时候,总是要改写hashCode()  两个原则:  hashCode()的返回值和equals()的关系如下:  如果x.equals(y)返回“true”,那么x和y的hashCode()必须相等。  如果x.equals(y)返回...

    Java-Reflection-and-Object-Comparison-in-Java:Java Reflection创建适当的对象,覆盖equal和hashCode方法

    空构造函数定义公共方法void setIntValue(int iIn){...}定义公共方法void setStringValue(String sIn){...}按照以下方式设计Java类:2个私有数据成员double DoubleValue ; int IntValue; 空构造函数定义公共...

    java中重写equals和重写hashCode()

    在Java编程语言中,`equals()` 和 `hashCode()` 是两个非常重要的方法,它们主要用于比较对象的平等性以及在散列数据结构(如 `HashMap`、`HashSet` 等)中的对象定位。当我们创建自定义类时,有时需要根据业务需求...

    java个人总结.docx

    在这个个人总结中,我们将探讨几个关键的Java知识点,包括对象创建、equals与hashCode方法、对象序列化以及String、StringBuffer和StringBuilder的区别。 首先,让我们来看看创建Java对象的四种方式: 1. **New**...

    学生集合排序

    本文将详细探讨如何实现这个过程,重点在于重写`hashCode`和`equals`方法,以及利用`Collections`工具类和自定义比较器来实现多属性排序。 首先,让我们了解`hashCode`和`equals`方法的重要性。这两个方法是Java中...

    java中 == 与 equal 的区别讲解

    同时,为了保持哈希表的正确性,重写 `equals()` 时通常也需要重写 `hashCode()` 方法。 ```java @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null || ...

    关于重写equals()为什么一定要重写hashcode()自己的一点心得

    首先我们看下下面代码及输出和String重写equals和hashcode的源码: package com.zzy.test; public class Test6 { public static void main(String[] args) { String s1="aaa"; String s2="aaa"; String s3=new ...

    Java中Equals使用方法汇总

    本文将深入探讨`equals`方法的使用方法、重写注意事项以及与`hashCode`方法的关系。 ### Q1. 何时应该重写`equals`方法? 在需要比较对象的值而不是引用时,应重写`equals`方法。默认情况下,`equals`方法使用`==`...

    sun公司开源jar -log.jar

    sun公司开源的jar包,里面封装了log4的日志以及关于自动生成hashcode代码以及重写equal方法的jar

    8张图解java.docx

    equals() 方法和 hashCode() 方法是 Object 类中的两个重要方法。equals() 方法用于比较两个对象是否相等,而 hashCode() 方法用于返回对象的哈希值。它们的区别在于: * 如果两个对象相等(equal),那么他们一定...

Global site tag (gtag.js) - Google Analytics