- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
15郝斌(99-102)Collections的使用HashSet容器必须实现equals和hahsCode方法Iterator接口Map接口
99课:复习上节课内容。
100节课:
举例:HashSet使用必须实现equals()和HashsCode()方法
import java.util.*;
class Student implements Comparable//学生类,要实现排序得用接口继承
{
private int id;//学号
private String name;//姓名
public Student(int id, String name)//通过构造函数完成初始化
{
this.id = id;
this.name = name;
}
@Override
public String toString()//通过toString返回信息
{
return id + + name; //1000张三
//System.out.println();
}
public boolean equals(Object ob)//如果取消equals( )方法也会出现重复
{
Student st = (Student)ob;
return st.id==this.id st.name==this.name;
}
public int hashCode()//如果取消hashCode()方法会出现重复
{
return id * this.name.hashCode();//
}
public int compareTo(Object ob)//
{
Student st = (Student)ob;//把ob强制转换成Student类型。
return this.id-st.id;//排序标准。
}
}
public class TestSet//
{
public static void main(String[] args)//
{
Set S = new HashSet(); //TreeSet HashSet实现了Set容器的一个接口
S.add(new Student(1000, 张三));//下面用add()方法把对象放进去。
S.add(new Student(1003, 小娟));
S.add(new Student(1002, 王五));
S.add(new Student(1001, 李四));//以下重复了,因为set排序无顺序、不允许重复。
S.add(new Student(1001, 李四));
S.add(new Student(1001, 李四));
S.add(new Student(1001, 李四));
S.add(new Student(1001, 李四));
S.add(new Student(1001, 李四));
System.out.println(S); //[
}结果:无重复的输出。
}
举例:讲什么是hashCode()方法
String 和 Integer 这些Java自带的类都重写了hashCode方法,如果String 和 Integer new出来的
对象的内容是一样的,则这些对象的hashCode返回值也是一样的,虽然这些对象占用的是不同的内存
不过用户自定义类型则不同,如本程序的A类,即便是两个内容一模一样的A类对象,它们返回的
hashCode值也是不一样的,但是两个内容一模一样的Integer类对象或者String类对象返回的
hashCode值却是一样的,因为系统自带的String 和 Integer 类都已经重写了Object的hashCode方法嘛!
如果程序员希望自己定义的类对象,占用不同内存空间但内容却是一样的对象调用hashCode方法
返回值是一样的,则程序员就必须自己重写hashCode方法,如本程序的B类
class A
{
private int id;
public A(int id)
{
this.id = id;
}
}
class B
{
private int id;
public B(int id)
{
this.id = id;
}
@Override
public int hashCode()
{
return new Integer(id).hashCode();
}
}
public class TestHashCode_1{
public static void main(String[] args) {
System.out.println(new A(1).hashCode() = + new A(1).hashCode(
文档评论(0)