版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- BIM技术应用实施方案
- 品牌宣传与市场推广工具包
- 员工培训安排跟进函(5篇)
- 智能交通系统停车场智能监测系统使用手册
- 告知变更供应商的函(3篇)范文
- 2026届四川省巴中学市恩阳区重点名校初三下学期期初学情调研考试语文试题试卷含解析
- 农业科技园规划与发展战略手册
- 新疆沙湾县2025-2026学年初三3.20联考考试英语试题含解析
- 2026年天津市津南区咸水沽三中学业水平模拟考试英语试题仿真模拟试题B卷含解析
- (正式版)DB32∕T 2633-2014 《乡镇(街道)便民服务中心服务管理规范》
- 2026年安庆医药高等专科学校单招综合素质考试题库及答案详解(各地真题)
- 2026年春统编版小学道德与法治五年级下册(全册)教学反思
- 2025至2030中国智能射击装备行业市场运行分析及发展前景与投资研究报告
- 2025年落实党的创新理论方面存在的问题和整改措施
- 2026年辅警面试常见试题及深度解析
- 党的二十届四中全会精神题库
- 房产代持协议
- 《课间十分钟》-完整版课件
- Illustrator-CC完整版ppt全套课件整本书电子教案最全教学教程
- 变动成本法和完全成本法课件
- 施工升降机回顶方案
评论
0/150
提交评论