您好,欢迎访问三七文档
JAVA高级编程•第九章java.util包•刘彬liubin003@chinasofti.com本次课程目标Java.util包Date类与Calendar类处理时间日期Random类创建随机数集合的概念与Collection接口List接口与ArrayList类,LinkedList类和Vector类Set接口与HashSet类,Iterator迭代器Map接口与HashMap类Collections集合工具类Comparator接口实现自定义比较规则2java.util包•java.util包是JDK的工具包,里面包含大量实用工具,其中有负责日期的Date类以及新的日历类calendar类,还有非常重要的容器类:集合框架,以及辅助接口Collections等等•如果要使用java.util包中的类我们需要显示的通过import导入:•importjava.util.*;Date类•Date类对象用来表示时间和日期;•该类提供一系列操纵日期和时间各组成部分的方法;•Date类最多的用途是获取系统当前的日期和时间。通过Date构建时间•通过Date的默认构造方法可以创建表示当前时间的Date对象•Datedate=newDate();•此时输出date对象(toString方法)将得到以下信息:•如果使用Date的toLocaleString()方法则为以下信息:格式化日期•虽然toLocaleString()可以返回我们习惯的日期格式,但是更多的时候我们需要自定义日期显示的格式•java.text.SimpleDateFormat类提供了自定义日期格式的方法importjava.util.Date;importjava.text.SimpleDateFormat;publicclassDemo{publicstaticvoidmain(String[]args){Datedate=newDate();SimpleDateFormatdateFormat=newSimpleDateFormat(yyyy-MM-ddHH:mm:ssE);Stringstr=dateFormat.format(date);System.out.println(str);}}Date类的常用方法方法原型说明booleanafter(Datewhen)如果当前日期对象在when指定的日期对象之后,返回true,否则返回falsebooleanbefore(Datewhen)如果当前日期对象在when指定的日期对象之前,返回true,否则返回falsevoidsetXxx(inttime)设置日期时间,可以设置年月日时分秒注意设置年份需减1900,设置月份需减1intgetXxx()获取日期时间,可以单独获取年月日时分秒注意获取年份需加1900,获取月份需加1booleanequals(Datewhen)比较当前日期是否与when指定的日期为同一时刻Calendar类•Calendar类也是用来操作日期和时间的类,但它可以以整数形式检索类似于年、月、日之类的信息;•Calendar类是抽象类,无法实例化,要得到该类对象只能通过调用getInstance()方法来获得;•Calendar对象提供为特定语言或日历样式实现日期格式化所需的所有时间字段。Calendar类的常用方法方法原型说明CalendargetInstance()返回默认地区和时区的Calendar对象(static)intget(intfields)返回调用对象中fields指定部分的值,fields来自Calendar的常量voidset(intfields,intvalue)将value中指定的值设置到fields指定的部分,fields来自Calendar的常量voidadd(intfields,intamount)将amount值添加到fields指定的时间或日期部分,fields来自Calendar的常量DategetTime()返回与调用对象具有相同时间的Date对象booleanafter(Datewhen)如果当前日期对象在when指定的日期对象之后,返回true,否则返回falsebooleanbefore(Datewhen)如果当前日期对象在when指定的日期对象之前,返回true,否则返回falsebooleanequals(Datewhen)比较当前日期是否与when指定的日期为同一时刻Random类•Random类专门用来生成随机数;•通过默认构造方法创建对象后可以使用下列方法获得一个随机数字方法原型说明intnextInt()从随机数生成器返回下一个整型值longnextLong()从随机数生成器返回下一个长整型值floatnextFloat()从随机数生成器返回0.0到1.0之间的下一个浮点值doublenextDouble()从随机数生成器返回0.0到1.0之间的下一个双精度值doublenextGaussian()从随机数生成器返回下一个高斯分布的双精度值。中间值为0.0,而标准差为1.0集合•集合是将多个元素组成一个单元的对象;•类似于数组,但数组最大的缺点是:长度受到限制(一经创建,就不可再改变),并且只能存放相同数据类型的元素;•集合的长度没有限制,可以存放任意多的元素,而且元素的数据类型也可以不同;•集合还提供一系列操纵数据的方法,如存储、检索等等。集合的优点•提供有用的数据结构和算法,从而减少编程工作;•提高了程序速度和质量,因为它提供了高性能的数据结构和算法;•允许不同API之间的相互操作,API之间可以来回传递集合;•可以方便地扩展或改写集合。java.util包中的集合类•为了满足不同场合的需要,java.util包中包含有一系列集合类;•如:ArrayList类、LinkedList类、Vector类、HashSet类,HashMap类等等,接下来将逐一进行介绍;•集合类中只能存放对象,而不能存放原始数据类型的元素,所以当有原始数据类型需要存放时,只能将其转换成相应的包装类对象•在JDK1.5版本以上会默认将原始数据类型包装成对象。Collection接口•大多数集合都间接实现了Collection接口,重写了其中的方法,包括向集合中添加元素的add方法,清空集合内元素的clear方法等等•Collection接口有两个分支,对应了两种不同的集合类型,具体的集合类都实现这两种接口中的某一个List接口:ArrayList,LinkedList,Vector都实现这个接口,该接口的实现集合类具备有序,允许重复元素的特征,通过索引访问操作元素Set接口:HashSet实现该接口,该接口的实现集合类具备无序,不允许重复元素的特征,没有索引ArrayList集合•ArrayList实现List接口,同时还继承了AbstractList类•ArrayList是一段连续的可以变的数组•ArrayList具备快速访问元素的特征,但是插入和删除元素的效率较低•通常使用无参的构造方法创建ArrayList对象•添加元素通过add()方法,有两种参数重载voidadd(intindex,Objecto)booleanadd(Objecto)•删除元素通过remove()方法,有两种参数重载booleanremove(Objecto)objectremove(intindex)ArrayList集合续•修改元素通过Objectset(intindex,Objecto);•搜索元素所在索引intindexOf(Objecto)intlastIndexOf(Objecto)•根据索引获取元素通过Objectget(intindex);•intsize()方法能获取该集合中的元素个数•Object[]toArray()返回包含集合元素的数组形式•voidclear()清空集合中所有元素•ArrayList还有大量实用的方法,具体参考JDK帮助文档LinkedList集合•LinkedList实现List接口,同时继承AbstractSequentialList类•LinkedList是链接列表实现,元素与元素之间在内存中并不是连续存放的•在插入和删除元素方面LinkedList非常高效,但是在访问元素方面效率比较低下•一般使用无参的构造方法创建LinkedList对象•LinkedList的方法基本等同ArrayList•只是LinkedList还拥有对第一个元素(first)和最后一个元素(last)操作的一系列特有方法Vector集合•Vector实现List接口,同时继承AbstractList类•事实上Vector与ArrayList在继承结构上没有区别•Vector是最原始的集合类,从JDK1.2版以后改进实现了List接口,与后续集合类不同的地方在于Vector是线程安全的•Vector在使用上和概念上等同ArrayList,但是由于线程安全,所以在效率上是最低的,无论是何种操作•关于线程安全,也称为同步,指同一时刻只允许一个对元素的请求操作•从1.2版以后我们可以通过Collections提供的方法将集合进行同步HashSet集合•HashSet实现Set接口,同时继承AbstractSet类•与前面3个实现List接口的集合不同,HashSet是一个无序的,无索引的,不允许重复元素的集合•一般通过默认的构造方法创建HashSet对象•相对实现List接口的集合,添加,删除功能基本相同,但是没有涉及索引的方法,其中包括修改用的Objectset(intindex,Objecto)方法和检索用的Objectget(intindex)方法,intindexOf(Objecto)方法等等•如果要获取HashSet中存放的元素,需要通过称为迭代器的Iterator接口实现迭代器-Iterator•Iterator是一个专门对集合进行遍历的接口•List接口或Set接口的实现集合都有个名为iterator的方法,原型如下:•Iteratoriterator();•集合类通过iterator方法可以获取一个能对其元素进行遍历的迭代器•迭代器有三个方法:booleanhasNext();如果仍有元素可以遍历,则返回trueObjectnext();返回迭代器中下一个元素voidremove();移除最后一次返回的元素,会影响原集合中的元素HashMap集合•HashMap实现Map接口,同时继承AbstractMap类•Map接口与List接口和Set接口不同,并不是Collection接口的子接口,其实现类HashMap的特点是通过键值对的形式保存和检索元素,每一个元素值对应一个唯一的键,元素之间是无序的,也没有索引•通过默认的无参构造方法可以创建HashMap的实例•添加一个元素通过Objectput(Objectkey,Objectvalue);•获取元素通过Objectget(Objectkey)方法•修改元素也可以使用put方法,在键相同的情况,值会进行覆盖集合总结•在Java中集合根据其实现的接口分为三类List接口:可以理解为一个数组,或者说是一个队列,元素都一个接一个的紧密排列.ArrayList,LinkedList,Vector为代表,该接口的实现集合类具备有序,允许重复元素的特征,通过索引访问操作元素Set接口:更像一个袋子,装入的顺序不等于拿出来的顺序,HashSet为代表,该接口的实现集合类不允许重复元素的特征,没有索引Map接口:从名字解析理解为地图,只有地名,没有规律HashMap为代表,该接口的实现集合类没有索引,使用一个元素对应一个唯一标识的键值对方式存放和获取数据•所有的集合都将元素当成对象处理,并且允许null,大小根据实际元素个数改变Collections集合工具类•Collections是专门针对集合提供了一些使用的操作方法•Collections类的构造方
本文标题:第九章util包
链接地址:https://www.777doc.com/doc-4022460 .html