JavaSE_15_集合类(二)资料课件

上传人:我*** 文档编号:144988142 上传时间:2020-09-15 格式:PPT 页数:20 大小:283.50KB
返回 下载 相关 举报
JavaSE_15_集合类(二)资料课件_第1页
第1页 / 共20页
JavaSE_15_集合类(二)资料课件_第2页
第2页 / 共20页
JavaSE_15_集合类(二)资料课件_第3页
第3页 / 共20页
JavaSE_15_集合类(二)资料课件_第4页
第4页 / 共20页
JavaSE_15_集合类(二)资料课件_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《JavaSE_15_集合类(二)资料课件》由会员分享,可在线阅读,更多相关《JavaSE_15_集合类(二)资料课件(20页珍藏版)》请在金锄头文库上搜索。

1、Set接口没有提供Collection接口额外的方法,但实现Set接口的集合类中的元素是不可重复的。 Set集合与数学中集合的概念相对应。 JDK API中所提供的Set集合类常用的有: HashSet:散列存放 TreeSet:有序存放 LinkedHashSet,1,实现Set接口的集合HashSet存对象时: 根据每个对象的哈希码值(调用hashCode()获得)用固定的算法算出它的存储索引,把对象存放在一个叫散列表的相应位置(表元)中: 如果对应的位置没有其它元素,就只需要直接存入。 如果该位置有元素了,会将新对象跟该位置的所有对象进行比较(调用equals(),以查看是否已经存在了:

2、还不存在就存放,已经存在就放弃加入。 取对象时: 根据对象的哈希码值计算出它的存储索引,在散列表的相应位置(表元)上的元素间进行少量的比较操作就可以找出它。 Set接口存、取、删对象都有很高的效率。,2,HashSet不保存元素的加入顺序。 HashSet根据元素的哈希码进行存放,取出时也可以根据哈希码快速找到。 使用示例,3,向HashSet中添加元素时,系统为保证不重复,先比较hashCode( ) ,如果相同,再比较equals(),如果还相同,则认为是同一个对象,不再加入,add(.)返回false,Demo 要存入HashSet集合的自定义类型的对象通常需要重写hashCode()和

3、equals()方法。 同一个对象的hash值一定相同,同一个hash值不一定是同一个对象,甚至可能是不同类的对象。,Demo HashSet,set1加入字符串 set2加入Integer set3加入Student对象,属性有name,age,练习,创建GirlFriend对象,name,age,sex,birthday存入HashSet集合中 如果对象所有的属性值都一致,就认为是同一对象,不重复存储,否则就存储,然后两种方式遍历set集合。 重写hashCode(),equals(),toString(),练习,HashSet中存放Person(重写hashCode,equals,toS

4、tring) 属性有name,age,sex,height,weight hashCode()计算:name,age,sex equals()计算:name,age,sex,height,TreeSet使用红黑树结构对加入的元素进行排序存放,输出时也会按排序后的顺序, 所以放入TreeSet中元素必须是”可排序的”。 13,8,17,1,11,15,25,6,22,27,8,什么是 可排序的,加入TreeSet集合中的javabean类本身要实现Comparable kmprbl接口 自定义一个实现Comparatorkmp,ret接口的比较器实现类,在创建TreeSet对象时,将自定义比较器

5、传入构造方法 如果加入的类”不可比较”,则add()方法在运行时会报错,所有可排序的类都必须实现java.lang.Comparable接口,实现该接口中的唯一方法: public int compareTo(Object obj); 该方法如果 this:新加入对象,obj:集合中已经存在的对象. 返回 0,表示 this = obj,不加入集合 返回正数,表示 this obj,this较大放后面 返回负数,表示 this obj,this较小放前面 可排序的类通过Comparable接口的compareTo方法来确定该类对象的排序方式。,10,使用Comparable接口定义排序顺序有局

6、限性:实现此接口的类只能按compareTo(T t)定义的这一种方式排序。 如果同一类对象要有多种排序方式,应该为该类定义不同的比较器(实现Comparator接口的类)。 Comparator接口中的比较方法: public int compare(T a, T b);该方法如果 返回 0,表示 a= b 返回正数,表示 a b 返回负数,表示 a b TreeSet有一个构造方法允许给定比较器,它就会根据给定的比较器对元素进行排序。,11,java.util.Comparator,Demo TreeSet,加入字符串 加入Integer 加入MyBean类的对象(里面有int a,b,c

7、三个属性,先按照a顺序排,a相同再按照b顺序排,b又相同则按照c排序) 加入Person(实现Comparable接口,重写compareTo,toString) TreeSet set = new TreeSet(new PersonComparator(); 加入Person子类类型Student,自定义比较器实现Comparator接口,TreeSet练习,练习1.人类,属性:姓名,收入,年龄,(单独一本)书, 书类, 属性: 书名,价格 用Comparable接口实现 存储TreeSet集合,排序规则: A:先按照收入排序:从高到低 B:收入相等的情况下,按照年龄排序:从小到大 C:如

8、果收入和年龄都相等,按照姓名排序,字典顺序(String类的compareTo方法) D:如果以上3个属性都相等,按照书排序,先按照书价格:从低到高,如果书价格相等,按照书名(字典顺序)。 练习2.利用自定义比较器Comparator实现类完成上题。 练习3.使用匿名内部类自定义比较器完成上题。,java.util.Collections类是操作集合的工具类,提供了一些静态方法实现了基于集合的一些常用算法 void sort(List list)根据元素的自然顺序 对指定List列表按升序进行排序。List列表中的所有元素都必须实现 Comparable 接口,否则编译报错。 void shu

9、ffle(List list)对List列表内的元素进行随机排列 void reverse(List list)对List列表内的元素进行反转 void copy(List dest, List src)将src列表内的元素复制到dest列表中,要求dest列表的现有长度大于等于src列表的现有长度,否则运行时会出现IndexOutOfBoundsException,java提供的copy方法,Collections: static void copy(List dest, List src)将src列表内的元素复制到dest列表中 Arrays: staticint copyOf(intor

10、iginal, intnewLength) 复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。 System: staticvoid arraycopy(Objectsrc, intsrcPos, Objectdest, intdestPos, intlength) 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。,集合与数组的相互转换,Arrays类的方法 数组集合 static List asList(T. a) 返回一个受指定数组支持的固定大小的列表,例如: Integer arr = 1,2,3;/必须是引用数据类型 List list

11、 = Arrays.asList(arr); String arr2 = new String 1, 2; List list = Arrays.asList(arr2);,Collection接口的方法 集合数组 Object toArray() 返回包含此 collection 中所有元素的Object数组。 T toArray(Ta) 返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。 List list = new ArrayList(); list.add(1);list.add(2); int size = list.size();

12、/获取集合的大小 String arr = (String)list.toArray(new Stringsize);,集合与数组的相互转换,LinedHashSet根据元素的哈希码进行存放,同时用链表记录元素的加入顺序。,18,Demo LinkedHashSet,对比HashSet和LinkedHashSet的Iterator遍历顺序 思考:是否可以用普通for循环来遍历? 思考:是否可以用增强for循环来遍历?,练习,1.如何去除List集合中的重复元素? a,b,c,a,c,b,d, 2.对ArrayList中的Person对象按照先年龄从大到小,相同年龄的再按照姓名的字母顺序进行排序.参考:Collections类的static void sort(List list),

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号