《第6讲_java.util包和集合框架.ppt》由会员分享,可在线阅读,更多相关《第6讲_java.util包和集合框架.ppt(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、北京理工大学珠海学院北京理工大学珠海学院计算机学院计算机学院 赵卓君赵卓君第六讲第六讲 Java.util包包和集合框架和集合框架回顾回顾在在Java中装箱和拆箱都是自动进行的中装箱和拆箱都是自动进行的Math类是类是final类,里面的方法都是类,里面的方法都是staticfinal方法方法String类代表的字符串是不可变的,也就是说字符类代表的字符串是不可变的,也就是说字符串是常量并且不能改变它们的串是常量并且不能改变它们的StringBuffer类用作构建字符串的构建块,代表可类用作构建字符串的构建块,代表可以改变的字符串以改变的字符串2计算机学院计算机学院 赵卓君赵卓君本讲目标本讲目
2、标使用使用Date和和Calendar类来处理日期类来处理日期使用使用Random类来生成随机数类来生成随机数集合框架集合框架(重点、难点重点、难点)Collection接口接口Iterator接口接口List接口:接口:ArrayList类、类、LinkedList类、类、Vector类类Set接口:接口:HashSet类、类、TreeSet类类Map接口:接口:HashMap类、类、TreeMap类类Collections父类父类3计算机学院计算机学院 赵卓君赵卓君英语单词英语单词calendar日历日历collection集合集合date日期日期dictionary字典字典element
3、元素元素hash哈希哈希list列表列表map映射映射parse解析,分列解析,分列random随机随机remove移除移除stack堆栈堆栈vector矢量矢量4计算机学院计算机学院 赵卓君赵卓君Date类类nDate类表示日期和时间类表示日期和时间n提供操纵日期和时间各组成部分的方法提供操纵日期和时间各组成部分的方法nDate类的最佳应用之一是获取系统当前时类的最佳应用之一是获取系统当前时间间5计算机学院计算机学院 赵卓君赵卓君Date类构造方法类构造方法2-1构造方法构造方法说明说明Date()使用当天的日期创建使用当天的日期创建DateDate(longdt)使用自使用自1970年年1
4、月月1日日0时时0分分0秒以后的指定毫秒数创建秒以后的指定毫秒数创建Date6计算机学院计算机学院 赵卓君赵卓君voiddisplay()StringstrDate,strTime=;System.out.println(今天的日期是:今天的日期是:+objDate);longtime=objDate.getTime();System.out.println(自自1970年年1月月1日起日起+以毫秒为单位的时间以毫秒为单位的时间(GMT):+time);strDate=objDate.toString();/提取提取GMT时间时间strTime=strDate.substring(11,(st
5、rDate.length()-4);/按小时、分钟和秒提取时间按小时、分钟和秒提取时间strTime=时间:时间:+strTime.substring(0,8);System.out.println(strTime);Date类构造方法类构造方法2-2DateTimeDisplay()objDate=newDate();使用使用getTime()方方法从法从Date对象获对象获取时间取时间Date对象用于输对象用于输出出日期日期7计算机学院计算机学院 赵卓君赵卓君Calendar类类n根据给定的根据给定的Date对象,对象,Calendar类可以以类可以以YEAR和和MONTH等整型的形式检索
6、信息等整型的形式检索信息n它是抽象的,因此不能实例化它是抽象的,因此不能实例化nGregorianCalendar:是是Calendar的子类,实现的子类,实现Gregorian形式的日历形式的日历8计算机学院计算机学院 赵卓君赵卓君Random类类-1n该类可以产生随机整数、随机浮点数该类可以产生随机整数、随机浮点数构造方法构造方法说明说明Random()创建一个新的随机数生成器。创建一个新的随机数生成器。Random(longseed)使用单个使用单个long种子创建一个新的随机数生种子创建一个新的随机数生成器成器9计算机学院计算机学院 赵卓君赵卓君Random类类-2publicintn
7、extInt()方法方法n返回下一个随机整数,它是此随机数生成器的返回下一个随机整数,它是此随机数生成器的序列中均匀分布的序列中均匀分布的int值。所有值。所有232个可能个可能int值的生成概率大致相同。值的生成概率大致相同。publicintnextInt(intn)n返回一个随机整数,它是取自此随机数生成器返回一个随机整数,它是取自此随机数生成器序列的、在序列的、在0(包括)和指定值(不包括)之(包括)和指定值(不包括)之间均匀分布的间均匀分布的int值。所有可能的值。所有可能的n个个int值的值的生成概率大致相同。生成概率大致相同。10计算机学院计算机学院 赵卓君赵卓君为什么需要集合框
8、架?为什么需要集合框架?学学员员1学学员员20n如何存储每天的新闻信息?如何存储每天的新闻信息?n如何存储课程编号与课程信息,能够通过编号方便地获得如何存储课程编号与课程信息,能够通过编号方便地获得课程信息?课程信息?如果写程序时并不知道程序运行时会需要多少对象,或者需要更复如果写程序时并不知道程序运行时会需要多少对象,或者需要更复杂的方式存储对象杂的方式存储对象,那么可以使用那么可以使用JavaJava集合框架来解决这类问题集合框架来解决这类问题一维数组一维数组编号编号1编号编号N课程课程1课程课程N一一对应一一对应新闻新闻1新闻新闻N每天的新闻总数不每天的新闻总数不确定,显然无法再确定,显
9、然无法再使用数组保存使用数组保存n存储一个班的学员信息,假定一个班容纳存储一个班的学员信息,假定一个班容纳20名学员名学员11计算机学院计算机学院 赵卓君赵卓君集合框架集合框架n集合用于存储、检索和操纵数据集合用于存储、检索和操纵数据n集合框架是用于表示和操纵集合的统一体系结构集合框架是用于表示和操纵集合的统一体系结构n集合框架包含三个组件集合框架包含三个组件 接口接口是表示集合的抽象数据类型 算法算法是对实现接口的对象执行计算的方法 实现实现是接口的实际实现12计算机学院计算机学院 赵卓君赵卓君集合框架的优点集合框架的优点n提供有用的数据结构和算法,从而减少编程提供有用的数据结构和算法,从而
10、减少编程工作工作n提高了程序速度和质量,因为它提供了高性提高了程序速度和质量,因为它提供了高性能的数据结构和算法能的数据结构和算法n允许不同允许不同API之间的互操作,之间的互操作,API之间可以之间可以来回传递集合来回传递集合n可以方便地扩展或改写集合可以方便地扩展或改写集合13计算机学院计算机学院 赵卓君赵卓君集合框架包含的内容集合框架包含的内容1接口接口CollectionListMap2具体类具体类ListArrayListLinkedListMapHashMap3算法算法Java集合框架为我们提供了一套性能优良、使用方便的接口和类,我们集合框架为我们提供了一套性能优良、使用方便的接口
11、和类,我们不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出现的问题了现的问题了 。Java集合框架位于集合框架位于java.util包中包中 Collections提供了对集合进行排序、遍历等多种算法实提供了对集合进行排序、遍历等多种算法实现,如现,如 sort()、reverse()、shuffle()采用键采用键-值对的存储方值对的存储方式,长度可动态改变式,长度可动态改变采用线性列表的存储采用线性列表的存储方式,长度可动态改方式,长度可动态改变变Set不保证元素的顺序,不允不保证元素的顺序,不允许出现重复的元
12、素许出现重复的元素VectorHashtableSetTreeSetHashSet14计算机学院计算机学院 赵卓君赵卓君集合接口集合接口nList接口接口nMap接口接口nSet接口接口元素以线性方式存储元素以线性方式存储存储的顺序与添加的顺序相同存储的顺序与添加的顺序相同以键以键-值的映射来存储元素值的映射来存储元素键值不允许重复键值不允许重复不保证元素的顺序不保证元素的顺序不允许重复元素不允许重复元素15计算机学院计算机学院 赵卓君赵卓君List 接口接口n允许重复的元素允许重复的元素n允许允许null值值n保证元素的顺序保证元素的顺序n常用的实现该接口的类:常用的实现该接口的类:qArr
13、ayList类似数组类似数组qVector矢量矢量qLinkedList链表链表qStack堆栈(堆栈(LIFO)16计算机学院计算机学院 赵卓君赵卓君ArrayList2-1nArrayList对象是长度可变的对象引用数组对象是长度可变的对象引用数组,类似于类似于动态数组动态数组n继承继承AbstractList并实现并实现List接口接口n随着元素的添加,元素的数目会增加,列表也会随随着元素的添加,元素的数目会增加,列表也会随着扩展着扩展n访问和遍历对象时,它提供更好的性能访问和遍历对象时,它提供更好的性能17计算机学院计算机学院 赵卓君赵卓君ArrayList2-2nArrayList类
14、的构造方法包括:类的构造方法包括:构造方法说明ArrayListArrayList()()创建一个空创建一个空 ArraylistArraylistArrayList(CollectiArrayList(Collectionon c)c)根根据据给给定定集集合合的的元元素素创创建建数数组列表组列表ArrayList(intArrayList(int size)size)使用给定大小创建一个数组使用给定大小创建一个数组列表。向数组列表添加元素列表。向数组列表添加元素时,此大小自动增加时,此大小自动增加18计算机学院计算机学院 赵卓君赵卓君Vector类类它具有类似数组的数据结构,而且是动态的可以
15、存放一定数量的元素容量可以递增Vector 类类原始数据类型不能原始数据类型不能添加到添加到 Vector 中中19计算机学院计算机学院 赵卓君赵卓君Set 接口接口nSet接口不保证元素的顺序,不允许出现重复的元素接口不保证元素的顺序,不允许出现重复的元素n实现实现Set接口的类:接口的类:HashSet、TreeSetnHashSet类不允许出现重复元素,不保证集合中元素类不允许出现重复元素,不保证集合中元素的顺序,只允许一个的顺序,只允许一个null元素。元素。nTreeSet是是Set的一种变体,可以实现按照的一种变体,可以实现按照自然顺序自然顺序排排序。在添加元素时会自动将其插入到已
16、经有序的元序。在添加元素时会自动将其插入到已经有序的元素序列中。素序列中。q字符串按照字符串按照“字典字典”的顺序的顺序q整数按照数字大小的顺序整数按照数字大小的顺序HashSet和和TreeSet的区别:的区别:HashSet不保证元素的顺序,而不保证元素的顺序,而TreeSet可以自然顺序插入添加的元素可以自然顺序插入添加的元素20计算机学院计算机学院 赵卓君赵卓君Map 接口接口n使用键使用键值的成对映射来存贮元素值的成对映射来存贮元素n键值不允许重复键值不允许重复n常用实现常用实现Map接口的类接口的类:类名类名null元素顺序元素顺序线程安全线程安全HashMap允许允许null键和
17、值键和值不保证元素的顺序不保证元素的顺序 线程不安全线程不安全Hashtable不允许有不允许有null键键和值和值不保证元素的顺序不保证元素的顺序 线程安全线程安全TreeMap不允许有不允许有null键键可以按键的自然顺可以按键的自然顺序将值排序序将值排序21计算机学院计算机学院 赵卓君赵卓君HashMap2-1n实现了实现了Map接口接口n用于存储键用于存储键/值映射关系值映射关系n不能保证其元素的存储顺序不能保证其元素的存储顺序22计算机学院计算机学院 赵卓君赵卓君HashMap2-2n此类的构造方法包括:此类的构造方法包括:n它在存放键它在存放键/值时允许值为值时允许值为null值值
18、比如:比如:HashMapmap=newHashMap();map.put(name,null);构造方法构造方法说明说明HashMap()创建一个具有默认容量和负载系数的创建一个具有默认容量和负载系数的空映射空映射HashMap(intsize)创创建建一一个个具具有有指指定定大大小小的的容容量量和和默默认认负载系数的空映射负载系数的空映射HashMap(intsize,floatload)创创建建一一个个具具有有指指定定的的容容量量和和指指定定的的负负载系数的空映射载系数的空映射HashMap(Mapmap)创创建建一一个个具具有有指指定定map映映射射的的散散列列映射映射23计算机学院计
19、算机学院 赵卓君赵卓君Iterator遍历元素接口遍历元素接口nIterator接口可以以统一的方式对各种集合元素进接口可以以统一的方式对各种集合元素进行遍历,也称为行遍历,也称为“迭代器迭代器”。它还可以在遍历元。它还可以在遍历元素的同时移除元素。素的同时移除元素。nhasNext()方法检测集合中是否还有下一个元素。方法检测集合中是否还有下一个元素。nnext()方法返回集合中的下一个元素。方法返回集合中的下一个元素。nIterator遍历集合元素的语法:遍历集合元素的语法:Iteratorit=集合对象名集合对象名.iterator();while(it.hasNext()Objecto
20、=it.next();System.out.println(o);24计算机学院计算机学院 赵卓君赵卓君Comparable 接口接口-1nJava.lang包中定义的一个比较对象的接口包中定义的一个比较对象的接口n提供抽象方法提供抽象方法compareTo(),可以对对象进,可以对对象进行整体排序。行整体排序。n使用方法:对要进行比较对象的类实现使用方法:对要进行比较对象的类实现Comparable接口,重写接口,重写compareTo()方法方法nComparable接口不仅仅用于集合框架,可接口不仅仅用于集合框架,可用于任何需要进行对象比较的场合。用于任何需要进行对象比较的场合。25计算
21、机学院计算机学院 赵卓君赵卓君Comparable 接口接口-2示例示例:classStudentimplementsComparableintid;Stringname;publicintcompareTo(Objectobj)Students=(Student)obj;returnthis.id-s.id;重写重写Comparable接口的接口的compareTo方法方法实现实现Comparable接口接口26计算机学院计算机学院 赵卓君赵卓君Comparator 接口接口-1nJava.util包中提供的一个对某个对象集包中提供的一个对某个对象集合进行整体排序的比较接口合进行整体排序的比
22、较接口n提供了提供了compare的比较方法来比较对象的比较方法来比较对象n使用方法:使用方法:q定义实现该接口的类,重写定义实现该接口的类,重写compare方法方法q实例化该类的对象实例化该类的对象q把该对象作为把该对象作为Collections.sort()方法的参方法的参数。数。27计算机学院计算机学院 赵卓君赵卓君Comparator 接口接口-2/实现实现Comparator接口,比较学生的姓名接口,比较学生的姓名classNameCompimplementsComparator/重写重写compare方法方法publicintcompare(Objecto1,Objecto2)S
23、tudents1=(Student)o1;Students2=(Student)o2;pareTo(s2.name);publicstaticvoidmain(Stringargs)NameComparatornc=newNameComparator();Collections.sort(al,nc);.28计算机学院计算机学院 赵卓君赵卓君总结总结nDate类的对象表示当前日期和时间类的对象表示当前日期和时间nCalendar类的对象可以以整型(如类的对象可以以整型(如YEAR和和MONTH等)的形式检索信息等)的形式检索信息n使用使用Random类中类中nextInt()或或nextDouble()方法可方法可以生成随机数以生成随机数n使用使用ArrayList、HashMap、Vector进行进行Java编程编程nList接口接口元素以线性方式存储存储的顺序与添加元素以线性方式存储存储的顺序与添加的顺序相同的顺序相同nSet接口以键接口以键-值的映射来存储元素键值不允许重值的映射来存储元素键值不允许重复复nMap接口不保证元素的顺序不允许重复元素接口不保证元素的顺序不允许重复元素29计算机学院计算机学院 赵卓君赵卓君
限制150内