当前位置:  技术问答>java相关

String 的hashCode()方法有什么作用和意义

    来源: 互联网  发布时间:2015-10-29

    本文导语:  什么场合可以使用 | 最重要的有三条:(用英文写是因为它们给我印象太深了) HashCode() is explicitly used in methods where hash functions are used, like hashTable() etc. One should always override hashCode...

什么场合可以使用

|
最重要的有三条:(用英文写是因为它们给我印象太深了)

HashCode() is explicitly used in methods where hash functions are used, like hashTable() etc.

One should always override hashCode() when overriding equals(). Unexpected behaviour will occur if you don't do so.

HashCode() should have the same value whenever equals() returns true.


|
Hashcode()使用在HashTable时产生Hash code(可以参考数据结构的散列表),而equal()则用来比较两个object是否相等。这两个方法都可以由用户重写。(Java中自带的equal()是比较内存地址的,在大多数情况下不符合用户的需求)
String的HashCode()是在String被用作Key时(插入HashTable)产生Hash code,在String的equal()中也用到了HashCode()。这两者的作用是不一样的,只是在String的实现中恰好可以用来比较。(这也说明Java的String.HashCode()写得好,可以产生独一无二的Hash code!)
一句话:在比较object时使用equal()
       在需要object作为key(使用HashTable)时使用Hashcode()
以上是我的理解,如果有什么不对的地方,请大家指导我
谢谢

|
equals()跟hashcode()都可以用来比较对象,前者是一个常用的方法,后者可以通过不同的对象有不同的散列码来比较两个对象

|
这个方法继承于object
用户比较对象是否相同
同样的对象有同样的hashcode

|
错!比较对象是否相同应该用equals方法。hashcode方法在把对象放到一个对象容器时大派用常,一个好的hashcode算法和坏的算法,在把对象放入容器和从容器取出时,效率相差极大!

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java的"句柄"进入函数时不是有副作用吗?可是String怎么就不呢?
  • java命名空间java.lang类string的类成员方法: string定义及介绍
  • 请告知一下String s1 = "mm"; 与String s1 = new String("mm");的区别!
  • C++ Bitsets 成员 to_string():返回bitset的字符串表示
  • String s = new String() 和 String s= null;有什么区别?
  • java命名空间javax.xml.xpath类xpathconstants成员方法: string定义参考
  • 已知a=1,b=2 String string="a+b";如何将string转化为表达式,并计算结果
  • java命名空间javax.management.openmbean类simpletype<t>的类成员方法: string定义及介绍
  • 对String.indexOf(String str,int fromIndex);和lastIndexOf(String str, int fromIndex);的困惑!
  • java命名空间java.io接口objectstreamconstants的类成员方法: tc_string定义及介绍
  • 问个低级的问题:我从库里取汉字时候,代码如下:String ls=ob.test(i);String dbstr1= new String(ls.getBytes("ISO-8859-1"),"GBK");
  • java命名空间javax.xml.ws.handler接口messagecontext成员方法: query_string定义参考
  • c#中 String和string的区别介绍
  • java命名空间java.lang类string的类成员方法: copyvalueof定义及介绍
  • String a="123"与String a=new String("123")出来的两个a,b之间有什么区别???
  • java命名空间javax.imageio.metadata接口iiometadataformat的类成员方法: datatype_string定义及介绍
  • static String和String如何互相赋值?
  • java命名空间javax.print类docflavor.string的类成员方法: text_plain定义及介绍
  • 请问“new String[]{(String ) ob}”怎么理解??
  • java命名空间java.lang类string的类成员方法: valueof定义及介绍
  • 内容是String[]的Object用什么最简单办法转变回String[]
  • java命名空间java.lang类string的类成员方法: tostring定义及介绍
  • 请问String.equals()和String.equalsIgnoreCase()有什么区别啊?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3