关于集合中理解的问题
2013-11-29 23:05
211 查看
package com.isannian.java; import java.util.HashSet; public class SetTest { public static void main(String[] args) { HashSet set=new HashSet(); // System.out.println(set.add("a")); // set.add("b"); // set.add("c"); // System.out.println(set.add("a")); // System.out.println(set); //// set.add(new RenLei("zhangsan")); // set.add(new RenLei("lisi")); // System.out.println(set); // RenLei ren=new RenLei("zhangsan"); // set.add(ren); // set.add(ren); // System.out.println(set); // // String s1 =new String("lisi"); // String s2 =new String("lisi"); // System.out.println("hashcode :"+(s1.hashCode()==s2.hashCode())); // set.add(s1); // set.add(s2); // System.out.println(set); RenLei r1 =new RenLei("a"); RenLei r2 =new RenLei("a"); System.out.println("hashcode :"+(r1.hashCode()==r2.hashCode())); System.out.println("equals: "+ r1.equals(r2)); set.add(r1); set.add(r2); System.out.println(set); } } class RenLei{ String name; public RenLei(String name){ this.name =name; } // @Override // public int hashCode() // { // final int prime = 31; // int result = 1; // result = prime * result + ((name == null) ? 0 : name.hashCode()); // return result; // } // // @Override // public boolean equals(Object obj) // { // if (this == obj) // return true; // if (obj == null) // return false; // if (getClass() != obj.getClass()) // return false; // RenLei other = (RenLei) obj; // if (name == null) // { // if (other.name != null) // return false; // } else if (!name.equals(other.name)) // return false; // return true; // } @Override public int hashCode() { // TODO Auto-generated method stub return this.name.hashCode(); } @Override public boolean equals(Object obj) { if(this == obj){ return true; } if(null != obj && obj instanceof RenLei) { RenLei r=(RenLei) obj; if(name.equals(r.name))//obj.equals(r.name) { return true; } } return false; } }
set 集合中(接口)
当使用 HashSet 时,使用add方法时,对象会自动调用hashCode() 方法,判断 已经存储在集合中的对象的hash code值是否与增加对象的hash code 值一致;如果不一致,直接加进去;
如果 一致, 在进行 equals方法比较,equals方法如果返回true,表示对象已经加进去了,就不会再添加新的 对象!
否则加进去!
如果重写 Object 中的 equals 方法 ,那么也要重写 hashCode 方法,反之亦然!
相关文章推荐
- 关于UrlEncode 一团乱麻的问题,后续彻底理解。Java中的 URLEncoder 与 URLDecoder无bug
- 关于编码问题的理解
- 关于STM32下载问题的简单理解
- 集合中关于iterator遍历顺序的理解
- 关于好多继承的问题,我们应该如何去理解
- 关于线性代数矩阵问题的一点理解
- 关于并发用户与集合点的问题
- 关于aspx模板页面元素路径的问题,以及对模板页面的理解
- C#关于继承后,添加泛型集合中后,再次遍历的问题 !!!
- 关于流和缓冲区的理解以及一般标准输入问题的解决方法小结 (fflush() setbuf() )
- UserControl 中包含封装了集合对象的属性被设计器自动初始化所引起的错误!也有关于List的问题
- 关于spring MVC 返回集合或对象自动转成json串的问题
- [转载]关于网传JDK1.7语法层次支持集合的问题
- matlab中关于FFT的使用(理解频率分辨率、补零问题)
- 关于Java中集合框架的层级结构理解
- Hibernate中关于多表连接查询hql 和 sql 返回值集合中对象问题
- 关于集合的空指针问题
- 关于使用RecyclerView遇到的一些问题集合
- 关于服务器响应,浏览器请求的理解以及javaWeb项目的编码问题
- 乱码问题集合--关于jsp和servlet中的乱码问题,传参等