`
y806839048
  • 浏览: 1108399 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

equal hashcode compareTo使用时机

 
阅读更多

equal hashcode compareTo使用时机

 

http://blog.csdn.net/afgasdg/article/details/6889383

总结:(使用时机)

 

1、equals方法用于比较对象的内容是否相等(覆盖以后)

 

2、hashcode方法只有在集合中用到

 

3、当覆盖了equals方法时,比较对象是否相等将通过覆盖后的equals方法进行比较(判断对象的内容是否相等)。

 

4、将对象放入到集合中时,首先判断要放入对象的hashcode值与集合中的任意一个元素的hashcode值是否相等,如果不相等直接将该对象放入集合中。

如果hashcode值相等,然后再通过equals方法判断要放入对象与集合中的任意一个对象是否相等,如果equals判断不相等,直接将该元素放入到集合中,否则不放入。

 

removeall重写equal

 

 

list<A> a list如果要调用remove(bo),或者removeAll(a) 需要重写A 的equals方法,因为remove,removeAll方法时两个从左边移除与右边相等的对象,

那么在未重写equals方法的情况下,用默认的,默认的equals方法时比较两个对象的存储位置是否一致,以确定相等,这显然不符合业务需要,我们需要重写,让其

根据id等少数几个字段判断(有些方法会自动调用equals,然后根据equals返回的结果再执行相应的操作,比如list的removeAll,为了符合业务需要需要重写)

A Bean:类中

 

compareTo equals toString 起作用时机

 

 equals 重写之后要重写 hashcode

Collections.sort(localTree1.getSonList());//用这个的时候实体要实现Comparable接口,写compareTo方法(Tree),类似list.removeAll();要实体类复写equals一样

 public int compareTo(Object arg0)

  {

    if (arg0 == null) {

      return 1;

    }

    if (Integer.valueOf(this.type).compareTo(Integer.valueOf(((Tree)arg0).getType())) == 0) {

      return Integer.valueOf(this.displayOrder).compareTo(Integer.valueOf(((Tree)arg0).getDisplayOrder()));

    }

    return Integer.valueOf(this.type).compareTo(Integer.valueOf(((Tree)arg0).getType()));

  }

 

public boolean equals(Object arg0)

  {

    if (arg0 == null) {

      return false;

    }

    MenuFolder po = (MenuFolder)arg0;

    return this.id.equals(po.getId());

  }

  //标准的写法是重写equals一定要重写hashcode方法,因为equals相等hashcode一定要相等(这是规范,牵涉到用一些数据结构时的内部判断),反之不一定可以不管

  public int hashCode()

  {

    return this.id.hashCode();

  }

 

 

打印对象时 

      System.out.println必须实现toString方法

public class BasAreaBeanVo implements Serializable {

private static final long serialVersionUID = 1L;

 

private String areaKey;

public String toString(){

return ToStringBuilder.reflectionToString(this);

}

}

 

0
0
分享到:
评论

相关推荐

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

    本文将详细介绍这两个方法的工作原理、使用场景以及它们之间的关系。 #### `hashCode()`方法 `hashCode()`方法定义于`Object`类中,它是Java语言的基础类,所有Java类都直接或间接地继承自`Object`。`hashCode()`的...

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

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

    led图文控制系统V5.33专为EQUAL LED控制器配套使用

    2. **LED图文控制系统**:该软件是与EQUAL LED控制器配合使用的软件界面,通过它可以创建和编辑文本、图片和动画等多媒体内容。系统可能包括了文本编辑器、图像处理工具、时间表设置、效果预览等功能,使得用户无需...

    equal与==区别

    ### equal与==的区别 在Java编程语言中,`equal`方法和`==`操作符都是用来比较对象之间是否相等的工具,但它们之间存在重要的差异。本文将从三个方面进行详细的对比分析:字符串的比较、非字符串对象的比较以及基本...

    string-hashcode:java.lang.String.hashCode

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

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

     使用hashCode()和equals()  hashCode()方法被用来获取给定对象的整数。这个整数被用来确定对象被存储在HashTable类似的结构中的位置。默认的,Object类的hashCode()方法返回这个对象存储的内存地址的编号。 ...

    前端开源库-equal-pmb

    然而,即使使用"===",在处理复杂对象或数组时,也不能确保深度比较的准确性,这就是equal-pmb库可能要解决的问题。 在JavaScript中,对象的比较是基于引用的,两个看似相同的对象,如果内存地址不同,"=="和"===...

    jQuery实现表单验证------equalTo方法

    本文将详细探讨如何利用jQuery实现表单验证,特别是`equalTo`方法的使用,这是一个非常实用的功能,用于确保用户输入的两个字段值相等,如常见于确认密码或验证码场景。 首先,理解`equalTo`方法的基本概念。`equal...

    MATLAB中isequal函数转化为C语言,有项目算法使用matlab中isequal函数进行运算,这里需要将转化为C语言

    在MATLAB编程环境中,`isequal`函数是一个非常常用的工具,用于判断两个变量或数组是否相等。在MATLAB中,`isequal`不仅比较数值的精确性,还考虑了特殊值如NaN(非数字)和NaT(非时间)的情况。在C语言中,没有...

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

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

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

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

    无法解决 equal to 操作的排序规则冲突

    ### 无法解决 equal to 操作的排序规则冲突 在处理SQL查询时,有时会遇到一个错误:“无法解决 equal to 操作的排序规则冲突”。这个问题通常出现在执行涉及不同排序规则(Collation)的数据表间的联接操作时。为了...

    3 Java中关于==和equal的区别 以及equals()方法重写

    Java 中关于 == 和 equal 的区别 及其 equals() 方法重写 Java 语言是 Sun 公司的开发成果,其主要特点是可以执行强,与平台的无关性使其实用性更强。但是 Java 中的 == 与 equal 是有区别的。 == 操作符是 Java ...

    Java中比较运算符compareTo()、equals()与==的区别及应用总结

    Java中比较运算符compareTo()、equals()与==的区别及应用总结 Java 中的比较运算符有多种,包括 compareTo()、equals() 和 ==,每种运算符都有其特点和应用场景。下面将详细介绍这三种运算符的区别和应用。 ...

    node-deep-equal, 节点算法的assert.deepEqual.zip

    node-deep-equal, 节点算法的assert.deepEqual 的深度相等节点的assert.deepEqual() algorithm 作为独立模块。这个 MODULE的速度比在 try/catch 中封装 assert.deepEqual() 快2 倍。 示例var equal

    Java中的hashcode方法介绍

    例如,HotSpot JVM中,`hashCode`可能使用全局随机数生成器来确保更大的哈希码分布,从而减少冲突。 总的来说,`hashCode`方法是Java中优化对象查找的关键工具,特别是在使用哈希表的场景下。正确地重写`hashCode`...

    fast-deep-equal:最快的深度相等检查,支持 Date、RegExp 和 ES6 Map、Set 和类型数组

    快深平等 最快的深度等于 ES6 Map、Set 和 Typed 数组支持。 安装 npm install fast-deep-equal ... 要支持 ES6 Maps、Sets 和 Typed arrays 等式,请使用: var equal = require ( 'fast-deep-eq

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

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

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

    Java中的Java反射和对象比较 项目介绍 首先,通过以下方式设计Java类: 2个私有数据成员int IntValue; 字符串StringValue; 空构造函数定义公共方法void setIntValue(int iIn){...}定义公共方法void ...

Global site tag (gtag.js) - Google Analytics