第6章_javautil包和集合框架_第1页
第6章_javautil包和集合框架_第2页
第6章_javautil包和集合框架_第3页
第6章_javautil包和集合框架_第4页
第6章_javautil包和集合框架_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、北京理工大学珠海学院北京理工大学珠海学院计算机学院计算机学院 赵卓君赵卓君第六讲第六讲 java.util包包和集合框架和集合框架计算机学院计算机学院 赵卓君赵卓君2回顾回顾n 在在Java中装箱和拆箱都是自动进行的中装箱和拆箱都是自动进行的n Math类是类是final类,里面的方法都是类,里面的方法都是static final方法方法n String类代表的字符串是不可变的,也就是说字符类代表的字符串是不可变的,也就是说字符串是常量并且不能改变它们的串是常量并且不能改变它们的计算机学院计算机学院 赵卓君赵卓君3本讲目标本讲目标n使用使用Calendar类来处理日期类来处理日期n使用使用Ra

2、ndom类来生成随机数类来生成随机数n集合框架集合框架(重点、难点重点、难点)Collection接口接口Iterator接口接口List接口:接口:ArrayList类、类、LinkedList类、类、Vector类类Set接口:接口:HashSet类、类、TreeSet类类Map接口:接口:HashMap类、类、TreeMap类类Collections父类父类计算机学院计算机学院 赵卓君赵卓君4英语单词英语单词-1ncalendar日历日历ncollection集合集合ndate日期日期ndictionary字典字典nelement元素元素nhash哈希哈希nlist列表列表计算机学院计算

3、机学院 赵卓君赵卓君5英语单词英语单词-2nmap映射映射nparse解析,分列解析,分列nrandom随机随机nremove移除移除nstack堆栈堆栈nvector矢量矢量计算机学院计算机学院 赵卓君赵卓君6Calendar类类n根据给定的根据给定的 Date 对象,对象,Calendar 类可以以类可以以 YEAR 和和 MONTH 等整型的形式检索信息等整型的形式检索信息n它是抽象类,因此不能实例化它是抽象类,因此不能实例化nGregorianCalendar:是:是 Calendar 的子类,实现的子类,实现 Gregorian 形式的日历形式的日历计算机学院计算机学院 赵卓君赵卓君

4、7Random类类-1n该类可以产生随机整数、随机浮点数该类可以产生随机整数、随机浮点数构造方法构造方法说明说明Random() 创建一个新的随机数生成器。创建一个新的随机数生成器。 Random( long seed)使用单个使用单个 long 种子创建一个新的随机数种子创建一个新的随机数生成器生成器 计算机学院计算机学院 赵卓君赵卓君8Random类类-2public int nextInt()方法方法n返回下一个随机整数,它是此随机数生成器的返回下一个随机整数,它是此随机数生成器的序列中均匀分布的序列中均匀分布的 int 值。所有值。所有 232 个可能个可能 int 值的生成概率大致相

5、同。值的生成概率大致相同。public int nextInt(int n) n返回一个随机整数,它是取自此随机数生成器返回一个随机整数,它是取自此随机数生成器序列的、在序列的、在 0(包括)和指定值(不包括)之(包括)和指定值(不包括)之间均匀分布的间均匀分布的 int 值。所有可能的值。所有可能的 n 个个 int 值值的生成概率大致相同。的生成概率大致相同。计算机学院计算机学院 赵卓君赵卓君9为什么需要集合框架?为什么需要集合框架?学学员员1学学员员20n如何存储每天的新闻信息?如何存储每天的新闻信息?n如何存储课程编号与课程信息,能够通过编号方便地获得如何存储课程编号与课程信息,能够通

6、过编号方便地获得课程信息?课程信息?如果写程序时并不知道程序运行时会需要多少对象,或者需要更复如果写程序时并不知道程序运行时会需要多少对象,或者需要更复杂的方式存储对象杂的方式存储对象, ,那么可以使用那么可以使用JavaJava集合框架来解决这类问题集合框架来解决这类问题一维数组一维数组编号编号1编号编号N课程课程1课程课程N一一对应一一对应新闻新闻1新闻新闻N每天的新闻总数不每天的新闻总数不确定,显然无法再确定,显然无法再使用数组保存使用数组保存n存储一个班的学员信息,假定一个班容纳存储一个班的学员信息,假定一个班容纳20名学员名学员计算机学院计算机学院 赵卓君赵卓君10集合框架集合框架n

7、集合用于存储、检索和操纵数据集合用于存储、检索和操纵数据n集合框架是用于表示和操纵集合的统一体系结构集合框架是用于表示和操纵集合的统一体系结构n集合框架包含三个组件集合框架包含三个组件 接口接口是表示集合的抽象数据类型 算法算法是对实现接口的对象执行计算的方法 实现实现是接口的实际实现计算机学院计算机学院 赵卓君赵卓君11集合框架的优点集合框架的优点n提供有用的数据结构和算法,从而减少编程提供有用的数据结构和算法,从而减少编程工作工作n提高了程序速度和质量,因为它提供了高性提高了程序速度和质量,因为它提供了高性能的数据结构和算法能的数据结构和算法n允许不同允许不同 API 之间的互操作,之间的

8、互操作,API之间可以之间可以来回传递集合来回传递集合n可以方便地扩展或改写集合可以方便地扩展或改写集合计算机学院计算机学院 赵卓君赵卓君12集合框架概述集合框架概述1接口接口Collection接口接口List接口接口Map接口接口2具体类具体类3算法算法JavaJava集合框架为我们提供了一套性能优良、使用方便的接口和类,集合框架为我们提供了一套性能优良、使用方便的接口和类,我们不必再重新发明轮子,只需学会如何使用它们,就可以处理实我们不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出现的问题了际应用中出现的问题了 。JavaJava集合框架位于集合框架位于java.util

9、java.util包中包中 Collections类类提供了对集合进行排序、遍历等多种算法实现提供了对集合进行排序、遍历等多种算法实现,如,如 sort()sort()、reverse()reverse()、shuffle()shuffle()采用键采用键- -值对的值对的映射存储方式映射存储方式采用线性列表的采用线性列表的存储方式,长度存储方式,长度可动态改变可动态改变Set接口接口不保证元素的顺不保证元素的顺序,不允许出现序,不允许出现重复的元素重复的元素LinkedListListArrayListVectorStackMapHashMapHashtableTreeMapSetTreeS

10、etHashSet计算机学院计算机学院 赵卓君赵卓君13集合接口集合接口nList接口接口nMap接口接口nSet接口接口元素以线性方式存储元素以线性方式存储存储的顺序与添加的顺序相同存储的顺序与添加的顺序相同以键以键-值的映射来存储元素值的映射来存储元素键值不允许重复键值不允许重复不保证元素的顺序不保证元素的顺序不允许重复元素不允许重复元素计算机学院计算机学院 赵卓君赵卓君14List 接口接口n允许重复的元素允许重复的元素 n允许允许null值值n保证元素的顺序保证元素的顺序n常用的实现该接口的类:常用的实现该接口的类:qArrayList 类似数组类似数组qVector 矢量矢量qLin

11、kedList 链表链表qStack 堆栈(堆栈(LIFO)计算机学院计算机学院 赵卓君赵卓君15ArrayList 2-1nArrayList 对象是长度可变的对象引用数组对象是长度可变的对象引用数组,类似于类似于动态数组动态数组n继承继承 AbstractList 并实现并实现 List 接口接口n随着元素的添加,元素的数目会增加,列表也会随着元素的添加,元素的数目会增加,列表也会随着扩展随着扩展n访问和遍历对象时,它提供更好的性能访问和遍历对象时,它提供更好的性能计算机学院计算机学院 赵卓君赵卓君16ArrayList 2-2nArrayList 类的构造方法包括:类的构造方法包括:构造

12、方法说明ArrayList()创建一个空创建一个空 ArraylistArrayList(Collection c)根据给定集合的元素创建数根据给定集合的元素创建数组列表组列表ArrayList(int size)使用给定大小创建一个数组使用给定大小创建一个数组列表。向数组列表添加元素列表。向数组列表添加元素时,此大小自动增加时,此大小自动增加计算机学院计算机学院 赵卓君赵卓君17Vector 类类它具有类似数组的数据结构,而且是动态的可以存放一定数量的元素容量可以递增Vector 类类原始数据类型不能原始数据类型不能添加到添加到 Vector 中中计算机学院计算机学院 赵卓君赵卓君18Set

13、 接口接口nSet接口不保证元素的顺序,不允许出现重复的元素接口不保证元素的顺序,不允许出现重复的元素n实现实现Set接口的类:接口的类:HashSet、TreeSetnHashSet类不允许出现重复元素,不保证集合中元素类不允许出现重复元素,不保证集合中元素的顺序,只允许一个的顺序,只允许一个null元素。元素。nTreeSet是是Set的一种变体,可以实现按照的一种变体,可以实现按照自然顺序自然顺序排排序。在添加元素时会自动将其插入到已经有序的元序。在添加元素时会自动将其插入到已经有序的元素序列中。素序列中。q字符串按照字符串按照“字典字典”的顺序的顺序q整数按照数字大小的顺序整数按照数字

14、大小的顺序HashSet和和TreeSet的区别:的区别:HashSet不保证元素的顺序,而不保证元素的顺序,而TreeSet可以自然顺序插入添加的元素可以自然顺序插入添加的元素计算机学院计算机学院 赵卓君赵卓君19Map 接口接口n使用键使用键值的成对映射来存贮元素值的成对映射来存贮元素n键值不允许重复键值不允许重复n常用实现常用实现Map接口的类接口的类:类名类名null元素顺序元素顺序线程安全线程安全HashMap允许允许null键和值键和值不保证元素的顺序不保证元素的顺序 线程不安全线程不安全Hashtable不允许有不允许有null键键和值和值不保证元素的顺序不保证元素的顺序 线程安

15、全线程安全TreeMap不允许有不允许有null键键可以按键的自然顺可以按键的自然顺序将值排序序将值排序计算机学院计算机学院 赵卓君赵卓君20HashMap 2-1n实现了实现了 Map 接口接口n用于存储键用于存储键/值映射关系值映射关系n不能保证其元素的存储顺序不能保证其元素的存储顺序计算机学院计算机学院 赵卓君赵卓君21HashMap 2-2n此类的构造方法包括:此类的构造方法包括:n它在存放键它在存放键/值时允许值为值时允许值为null 值值 比如:比如:HashMap map = new HashMap(); map.put(name,null);构造方法构造方法说明说明HashMa

16、p()创建一个具有默认容量和负载系数的创建一个具有默认容量和负载系数的空映射空映射HashMap(int size)创建一个具有指定大小的容量和默认创建一个具有指定大小的容量和默认负载系数的空映射负载系数的空映射HashMap(int size, float load)创建一个具有指定的容量和指定的负创建一个具有指定的容量和指定的负载系数的空映射载系数的空映射HashMap (Map map)创建一个具有指定创建一个具有指定 map 映射的散列映射的散列映射映射计算机学院计算机学院 赵卓君赵卓君22Iterator遍历元素接口遍历元素接口nIterator接口可以以统一的方式对各种集合元素进接

17、口可以以统一的方式对各种集合元素进行遍历,也称为行遍历,也称为“迭代器迭代器”。它还可以在遍历元。它还可以在遍历元素的同时移除元素。素的同时移除元素。nhasNext( )方法检测集合中是否还有下一个元素。方法检测集合中是否还有下一个元素。nnext( )方法返回集合中的下一个元素。方法返回集合中的下一个元素。nIterator遍历集合元素的语法:遍历集合元素的语法:Iterator it = 集合对象名集合对象名.iterator(); while(it.hasNext() Object o=it.next();System.out.println (o); 计算机学院计算机学院 赵卓君赵卓

18、君23Comparable 接口接口-1nJava.lang包中定义的一个比较对象的接口包中定义的一个比较对象的接口n提供抽象方法提供抽象方法compareTo(),可以对对象进,可以对对象进行整体排序。行整体排序。n使用方法:对要进行比较对象的类实现使用方法:对要进行比较对象的类实现Comparable接口,重写接口,重写compareTo()方法方法nComparable接口不仅仅用于集合框架,可接口不仅仅用于集合框架,可用于任何需要进行对象比较的场合。用于任何需要进行对象比较的场合。计算机学院计算机学院 赵卓君赵卓君24Comparable 接口接口-2示例示例:class Studen

19、t implements ComparableString name; public int compareTo(Object obj)Student s=(Student)obj;return pareTo(); 重写重写Comparable接口接口的的compareTo方法,方法,按姓名升序排序按姓名升序排序实现实现Comparable接接口口对姓名字符串进对姓名字符串进行比较行比较计算机学院计算机学院 赵卓君赵卓君25Comparator 接口接口-1nJava.util包中提供的一个对某个对象集包中提供的一个对某个对象集合进行整体排序的比较接口合进行整体排序的比较接口n提供了提供了compare的比较方法来比较对象的比较方法来比较对象n使用步骤:使用步骤:q定义实现该接口的类(该类又称为比较定义实现该接口的类(该类又称为比较器),并重写器),并重写compare方法方法q实例化该比较器类的对象实例化该比较器类的对象q把该对象作为把该对象作为Collections.sort( )方法的第方法的第二个参数。二个参数。计算机学院计算机学院 赵卓君赵卓君26Comparator 接口接口-2/实现实现Comparator接口,比较学生的姓名接口,比较学生的姓名class NameComp implements Comparator/重写重

温馨提示

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

评论

0/150

提交评论