Java网络程序设计 课件 单元6-02Set接口_第1页
Java网络程序设计 课件 单元6-02Set接口_第2页
Java网络程序设计 课件 单元6-02Set接口_第3页
Java网络程序设计 课件 单元6-02Set接口_第4页
Java网络程序设计 课件 单元6-02Set接口_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

第六单元Set接口Set接□方法HashSet使用TreeSet使用Comparable接口6.2.1Set接口方法下面列出了Set接口继承自Collection接口的主要方法:●booleanadd(Objectobj)向集合中添加一个数据元素,该数据元素不能和集合中现有数据元素重复。Set集合采用对象的equals()方法比较两个对象是否相等,判断某个对象是否已经存在于集合中。当向集合中添加一个对象时,HashSet会调用对象的hashCode()方法来获得哈希码,然后根据这个哈希码进一步计算出对象在集合中的存放位置。●voidclear()移除此集合中的所有数据元素,即将集合清空。●booleancontains(Objectobj)判断此集合中是否包含该数据元素,如果包含,则返回true。●booleanisEmptyO判断集合是否为空,为空则返回true。●Iteratoriterator()返回一个Iterator对象,可用它来遍历集合中的数据元素。●booleanremove(Object.obj)如果此集合中包含有该数据元素,则将其删除,并返回true。●int.size()返回集合中数据元素的个数,注意与数组、字符串获取长度的方法的区别。●Object[]toAxray()返回一个数组,该数组包含集合中的所有数据元素。6.2.1Set接口方法6.2.2HashSet使用Set接口主要有两个实现类HashSet和TreeSet,HashSet类有一个子类LinkedHashSet,它不仅实现了哈希算法,而且采用了链表结构。接下来我们通过一个案例来说明HashSet类的使用。importjava.util.*; //导入包publicclassTestSet{Publicstaticvoidmain(String[]args){//创建一个HashSet对象,存放学生姓名信息SetnameSet=newHashSet();nameSet.add("王云");nameSet.add("刘静涛");nameSet.add("南天华");nameSet.add("雷静");naxneSet.add("王云");//增加已有的数据元素System.out.println("再次添加王云是否成功:"+nameSet.add("王云"));System.out.println("显示集合内容:"+nameSet);System.out.println("集合里是否包含南天华:"+nameSet.contains("南天华"));System.out.println(”从集合中删除\"南天华\"…");nameSet.remove("南天华");Systemuout.println("集合里是否包含南天华:"+nameSet.contains("南天华"));System.out.println("集合中的元素个数为:"+nameSet.size());}}6.2.2HashSet使用从运行结果中可以看出,当向集合中增加一个已有(通过equals()方法判断)的数据元素时,没有添加成功。需要注意的是,可以通过add()方法的返回值判断是否添加成功,如果不获取这个返回值的话,Java系统并不提示没有添加成功。6.2.3TreeSet使用TreeSet类在实现了Set接口的同时,也实现了SortedSet接口,是一个具有排序功能Set接口类。本部分将介绍TreeSet类的使用,同时也会涉及Java如何实现对象间的排序功能,希望大家能深刻体会。TreeSet集合中的元素按照升序排列,默认是按照自然升序排列,也就是说TreeSet集合中的对象需要实现Comparable接口。6.2.3TreeSet使用importjava.util.*;publicclassTestTreeSet{publicstaticvoidmain(String[]args){Setts=newTreeSet();ts.add("王云";);ts.add("刘静涛");ts.add("南天华");System.out.println(ts);}}从运行结果可以看出,TreeSet集合ts里面的元素不是毫无规律的排序,而是按照自然升序进行了排序。这是因为TreeSet集合中的元素是String类,而String类实现了Comparable接口,默认按自然顺序排序。6.2.4Comparable接口如果程序员想定义自己的排序方式,方法也很简单,就是要让加入TreeSet集合中的对象所属的类实现Comparable接口,通过实现compareTo(Objecto)方法,达到排序的目的。假设有这样的需求,学生对象有两个属性,分别是学号和姓名。希望将这些学生对象加入TreeSet集合后,他们按照学号大小从小到大进行排序,学号相同的再按照姓名自然排序。6.2.4Comparable接口代码(实现Comparable接口):ClassStudentimplementsComparable{intstuNum=-1; //学生学号StringstuName="";//学生姓名Student(Stringname,intnum){this.stuNum=num;this.stuName=name;}//返回该对象的字符串表示,利于输出publicStringtoString(){return"学号为:"+stuNum+"的学生,姓名为:"+stuName;}//实现Comparable的compareTo方法publicintcompareTo(Objecto){Studentinput=(Student)o;//此学生对象的学号和指定学生对象的学号比较//此学生对象学号若大则res为1,若小则res为-1,相同的话res=0intres=stuNum>input.stuNum?1:(stuNum==input.stuNum?0:-1);//若学号相同,则按照string类自然排序比较学生姓名if(res==0){res=stuNpareTo(input.stuName);}returnres;}}其中,intcompareTo(Objecto)方法是用此对象和指定对象进行比较,如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。6.2.4Comparable接口publicclassTestTreeSet2{publicstaticvoidmain(String[]args){//用有序的TreeSet存储学生对象SetstuTS=newTreeSet();stuTS.add(newStudent("王云",1));stuTS.add(newStudent("南天华",3));stuTS.add(newStudent(

温馨提示

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

评论

0/150

提交评论