java基础视频等多个文件集合1-collection和set_第1页
java基础视频等多个文件集合1-collection和set_第2页
java基础视频等多个文件集合1-collection和set_第3页
java基础视频等多个文件集合1-collection和set_第4页
java基础视频等多个文件集合1-collection和set_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、成都传智播客教育 集合框架1讲师:Will .Iterable.Collection.Set.HashSet.TreeSet.List.ArrayList.LinkedList.Map.HashMap.TreeMap.Properties.Collections本章任务SetListMap成都传智播客教育 集合类 & 容器为什么出现集合类?面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就要对对象进行存储,集合就是存储对象最常用的一种方式。数组和集合类同是容器,有何不同?数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。数组中可以存储任意数据类型,集合只能存储对

2、象。集合类的特点集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。成都传智播客教育 集合框架的构成及分类成都传智播客教育 主要接口成都传智播客教育 两大接口Java集合类主要由两个接口派生出来:CollectionSet:不能存放重复对象List:可存放重复对象,有序Queue:队列SortedSet:可对集合数据排序MapSortedMap:可对集合数据排序成都传智播客教育 Collection接口boolean add(Object o):该方法用于向集合里面添加一个元素,若集合对象被添加操作改变了,返回true.boolean addAll(Collection c):把

3、集合c里面的所有元素添加到指定集合里面去,如果集合对象被添加操作改变了返回true.void clear():清除集合里面的所有元素,将集合长度变为0。boolean contains(Object o):返回集合里是否包含指定的元素。boolean containsAll(Collection c):返回集合里是否包含集合c内所有的元素。boolean isEmpty():返回集合是否为空(长度是否为0)。Iterator iterator():返回一个Iterator对象,用于遍历集合里的元素。boolean remove(Object o):删除集合中指定元素o。boolean remo

4、veAll(Collection c):从集合中删除集合c里面的元素。若删除一个或以上返回true。boolean retainAll(Collection c):从集合中删除集合c里不包含的元素。int size():得到集合元素的个数。Object toArray():把集合转成一个数组,所有集合元素变成数组元素。成都传智播客教育 集合遍历输出方式Iterator:迭代输出一旦操作集合的遍历输出,首选Iterator接口;ListIterator:Iterator子接口,专门输出List中的元素;Enumeration:古老的输出方式,迭代Vector元素,被Iterator取代;fore

5、ach:可输出数组和Iterable对象;成都传智播客教育 Iterator接口 Iterator主要遍历Collection集合中的元素,也有称为迭代器或迭代精灵。boolean hasNext():若被迭代的集合元素还没有被遍历,返回true.Object next():返回集合的下一个元素.void remove():删除集合上一次next()方法返回的元素。(若集合中有多个相同的元素,都可以删掉)iterator对于集合才能用,for不同,只要是循环都可用。成都传智播客教育 Iterator迭代是取出集合中元素的一种方式。因为Collection中有iterator方法,所以每一个子类

6、集合对象都具备迭代器。迭代器在Collcection接口中是通用的,它替代了Vector类中的Enumeration(枚举)。迭代器的next方法是自动向下取元素,要避免出现NoSuchElementException。迭代器的next方法返回值类型是Object,所以要记得类型转换。Iterator iter = l.iterator();while(iter.hasNext()System.out.println(iter.next();成都传智播客教育 Set接口Set是Collection子接口;Set和Collection基本上一样,一点除外:Set无法记住添加的顺序,不允许包含重复

7、的元素。当试图添加两个相同元素进Set集合,添加操作失败,add()方法返回false。Set判断两个对象是否相等用equals,而不是使用=。也就是说两个对象equals比较返回true,Set集合是不会接受这个两个对象的。常用子类:HashSet:散列存放TreeSet:有序存放hashCode方法对于HashSet的作用HashSet类是Set接口最常用的实现类,采用hash算法存储数据,具有良好的存储和查找功能。散列存储:不记录添加顺序;排列顺序时,顺序有可能发生变化;线程不安全的,多个线程访问一个HashSet要使用同步代码;HashSet集合元素值允许是null,但是最多只能有一个

8、;hash(翻译为哈希,或散列)算法的功能:保证通过一个对象快速找到另一个对象;其算法价值体现在速度,可以保证查询快速执行;当从HashSet中访问元素时,HashSet先计算该元素的hashCode(也就是该对象的hashCode方法返回值),然后直接到该HashCode对应的位置取出该元素;在这里对象的hashCode就好比是数组里的索引,但是不是索引;成都传智播客教育 HashSet元素添加当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,判断已经存储在集合中的对象的hashCode值是否与添加的对象的hashC

9、ode值一致:若不一致:直接添加进去;若一致,再进行equals方法比较,equals方法如果返回true,表明对象已经添加进去了,就不会再添加新的对象了,否则添加进去;如果我们重写了equals方法,也要重写hashCode方法,反之亦然;。HashSet集合判断两个元素相等的标准是两个对象通过equals方法比较相等,并且两个对象的hashCode方法返回值也相等。如果需要某个类的对象保存到HashSet集合中,覆写该类的equals()和hashCode()方法,应该尽量保证两个对象通过equals比较返回true时,他们的hashCode返回也相等。成都传智播客教育 不同类型字段如何取

10、得hashCode字段类型(f)计算方式boolean hashCode=(f?0:1);byte,short,char,int hashCode=(int)f;long hashCode=(int)(f(f32);float hashCode=Float.floatToIntBits(f);double long l = Double.doubleToLongBits(f); hashCode=(int)(l(l32)引用类型 hashCode=f.hashCode();成都传智播客教育 TreeSet使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进

11、行排序;参与排序的元素必须是同一类型的,不然会发生ClassCastException异常;TreeSet是SortedSet接口唯一的实现,与HashSet相比额外的方法有:Comparator comparator():返回当前Set使用的Comparator,若返回null,表示以自然顺序排序。Object first() 返回此 set 中当前第一个(最低)元素。 Object last() 返回此 set 中当前最后一个(最高)元素。 SortedSet subSet(Object fromElement, E toElement) 返回此 set 的部子集,其元素从 fromEle

12、ment(包括)到 toElement(不包括)。 SortedSet headSet(Object toElement)返回此 set 的部分子集,其元素严格小于 toElement。 SortedSet tailSet(Object fromElement) 返回此 set 的部分子集,其元素大于等于 fromElement。 TreeSet的排序之自然排序TreeSet会调用元素的compareTo(Object o)方法来比较元素之间的大小关系,然后将集合里的元素按升序排列.此时需要排序元素的类必须实现Compareble接口,并覆写其int compareTo(Object o)方法;该方法用于比较对象,若 pareTo(obj2),返回0,表示两个对象相等,若返回一个正整数,表示obj1大于obj2,若返回一个负整数,表示obj1小于obj2;对于TreeSet集合而言,判断两个对象相等的标准是:compareTo()方法比较返回 0;TreeSet的排序之定制排序TreeSet的自然排序是根据元素的大小进行升序排序的,若想自己定制排序,比如降序排序,就可以使用Comparator接口了:该接口包含int compare(Object o1

温馨提示

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

评论

0/150

提交评论