Java程序设计项目化教程-7.5.1 Set接口和Map接口_第1页
Java程序设计项目化教程-7.5.1 Set接口和Map接口_第2页
Java程序设计项目化教程-7.5.1 Set接口和Map接口_第3页
Java程序设计项目化教程-7.5.1 Set接口和Map接口_第4页
Java程序设计项目化教程-7.5.1 Set接口和Map接口_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

7.5.1Set接口和Map接口Set接口继承自Collection接口,与Collection接口的方法基本一致,并没有对Collection接口进行功能扩充,比Collection接口更严格。Set接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。7.5.1Set接口和Map接口HashSet根据对象的散列值来确定元素在集合中的存储位置,具有良好的存取和查找性能。TreeSet以二叉树的方式来存储元素,可以实现对集合中的元素进行排序。7.5.1Set接口和Map接口HashSet是Set接口的一个实现类,所存储的元素是不可重复的,并且元素都是无序的。当向HashSet集合中添加一个对象时,首先会调用该对象的hashCode()方法来计算对象的哈希值,从而确定元素的存储位置。7.5.1Set接口和Map接口HashSet如果此时哈希值相同,再调用对象的equal()方法来确保该位置没有重复元素。Set集合与List集合存取元素的方式都一样。例7-13HashSet集合的使用importjava.util.HashSet;importjava.util.Iterator;public

classexample7_13{

public

static

voidmain(String[]args){HashSetset=newHashSet();//创建HashSet集合

set.add("小明");//向该set集合中添加字符串

set.add("大明");

set.add("赵四");

set.add("大明");//向该set集合中添加重复元素Iteratorit=set.iterator();//获取Iterator对象

while(it.hasNext()){//通过while循环判断集合中是否有元素Objectobj=it.next();//如果有元素,就通过迭代器的nest()方法获取元素

System.out.println(obj);}}}7.5.1Set接口和Map接口HashSet集合之所以能确保不出现重复的元素,是因为它在存入元素时做了很多工作。当调用HashSet集合的add()方法存入元素时,首先调用当前存入对象的hashCode()方法获得对象的散列值,然后根据对象的散列值计算出一个存储位置。7.5.1Set接口和Map接口如果该位置上没有元素,则直接将元素存入,如果该位置上有元素存在,则会调用equals()方法让当前存入的元素依次与该位置上的元素进行比较,如果返回的结果为false,就将该元素存入集合,如果返回的结果为true,则说明有重复元素,将该元素舍弃。7.5.1Set接口和Map接口HashSet存储元素的流程图7.5.1Set接口和Map接口importjava.util.HashSet;importjava.util.Iterator;public

classexample7_13{

public

static

voidmain(String[]args){HashSetset=newHashSet();//创建HashSet集合

set.add("小明");//向该set集合中添加字符串

set.add("大明");

set.add("赵四");

set.add("大明");//向该set集合中添加重复元素Iteratorit=set.iterator();//获取Iterator对象

while(it.hasNext()){//通过while循环判断集合中是否有元素Objectobj=it.next();//如果有元素,就通过迭代器的nest()方法获取元素

System.out.println(obj);}}}例7-14向HashSet存储Student对象importjava.util.*;classStudent{Stringid;Stringname;

publicStudent(Stringid,Stringname){//创建构造方法

this.id=id;

this.name=name;}

publicStringtoString(){//重写toString()方法

return

id+":"+name;}}public

classexample7_14{

public

static

voidmain(String[]args){HashSeths=newHashSet();//创建HashSet集合Studentstu1=newStudent("1","小明");//创建Student对象Studentstu2=newStudent("2","菲菲");Studentstu3=newStudent("2","菲菲");

hs.add(stu1);

hs.add(stu2);

hs.add(stu3);System.out.println(hs);}}例7-15去掉集合重复元素importjava.util.*;classStudent{privateStringid;privateStringname;

publicStudent(Stringid,Stringname){

this.id=id;

this.name=name;}

//重写toString()方法

publicStringtoString(){

return

id+":"+name;}

//重写hashCode()方法

public

inthashCode(){//返回id属性的散列值

return

id.hashCode();}

//重写equals()方法

public

booleanequals(Objectobj){

if(this==obj){//判断是否为同一个对象

return

true;//如果是,直接返回true}

if(!(obj

instanceofStudent)){//判断对象是否为Student类型

return

false;}Studentstu=(Student)obj;//将对象强转换为Student类型

boolean

b=this.id.equals(stu.id);//判断id的值是否相等

return

b;//返回判断结果}}public

classexample7_15{

public

static

voidmain(String[]args){HashSeths=newHashSet();Studentstu1=newStudent("1","小明");//创建HashSet对象Studentstu2=newStudent("2","菲菲");//创建Student对象Studentstu3=newStudent("2","菲菲");

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论