第6章Java工具类ppt课件.ppt_第1页
第6章Java工具类ppt课件.ppt_第2页
第6章Java工具类ppt课件.ppt_第3页
第6章Java工具类ppt课件.ppt_第4页
第6章Java工具类ppt课件.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

第六章Java工具类 6 1Java类集框架6 2泛型和枚举6 3常用类 本章重点集合类 数学类的使用 6 1Java类集框架 6 1 1JAVA中的类集框架6 1 2List接口及实现类6 1 3Set接口及实现类6 1 4Map接口及实现类 1Java的类集框架 JAVA的类集框架实现了对各种数据结构的封装 极大的降低了我们对数据管理与处理的难度 所谓框架就是一个类库的集合 集合框架就是一个用来表示和操作集合的统一的架构 包含了实现集合的接口与类 类集 Collection或称为容器 是一种包含其它对象 并提供对所包含对象的操作方法的对象 其包含的对象可以由同一类型的对象组成 也可以由不同类型的对象组成 6 1Java中的类集框架 概念 2类集框架中的接口 6 1Java中的类集框架 层次 2集合框架中的接口 Collection 集合层次中的根接口 JDK没有提供这个接口直接的实现类 Set 不能包含重复的元素 对象可能不是按存放的次序存放 也就是说不能像数组一样按索引的方式进行访问 SortedSet是一个按照升序排列元素的Set List 是一个有序的集合 可以包含重复的元素 提供了按索引访问的方式 Map 包含了key value对 Map不能包含重复的key SortedMap是一个按照升序排列key的Map 6 1Java中的类集框架 接口 2集合框架中的实现类 SortedSet Set List Map HashSet LinkedHashSet TreeSet ArrayList LinkedList SortedMap HashMap TreeMap 6 1Java中的类集框架 接口与类 2Collection接口 Collection接口是构造类集框架的基础 它声明所有类集都将拥有的核心方法 因为所有类集都实现Collection 所以熟悉它的方法对于清楚地理解框架是必要的 下面是该类接口中声明的最常用的方法 booleanadd Objectobj 将obj添加对类集中voidclear 从类集中删除所有元素 即清空类集booleancontains Objectobj 如果obj是调用类集的一个元素 则返回true 否则 返回false 依赖于对象的equals 方法booleanisEmpty 如果调用类集是空的 则返回true 否则返回falseIteratoriterator 返回调用类集的迭代器booleanremove Objectobj 从调用类集中删除obj的一个实例 如果这个元素被删除了 则返回true 否则返回falseintsize 返回调用类集中元素的个数 6 1Java中的类集框架 Collection接口 2Collection接口中的其它方法 booleanaddAll Collectionc 将集合c中的所有元素都加入到当前类集中booleancontainsAll Collectionc 如果调用类集包含了c中的所有元素 则返回true 否则 返回falsebooleanremoveAll Collectionc 从调用类集中删除c的所有元素 如果类集被改变了 也就是说元素被删除了 则返回true 否则返回falsebooleanretainAll Collectionc 删除调用类集中除了包含在c中的元素之外的全部元素 如果类集被改变了 也就是说元素被删除了 则返回true 否则返回falseObject toArray 返回一个数组 该数组包含了所有存储在调用类集中的元素 数组元素是类集元素的拷贝Object toArray Objectarray 返回一个数组 该数组仅仅包含了那些类型与数组元素类型匹配的类集元素 数组元素是类集元素的拷贝 如果array的大小与匹配元素的个数相等 它们被返回到array 如果array的大小比匹配元素的个数小 将分配并返回一个所需大小的新数组 如果array的大小比匹配元素的个数大 在数组中 在类集元素之后的单元被置为null 如果任一类集元素的类型都不是array的子类型 则引发一个ArrayStoreException异常 6 1Java中的类集框架 Collection接口 2ArrayList和LinkedList ArrayList 我们可以将其看作是能够自动增长容量的数组 利用ArrayList的toArray 返回一个数组 Arrays asList 返回一个列表 Liststooges Arrays asList Larry Moe Curly LinkedList是采用双向循环链表实现的 利用LinkedList实现栈 stack 队列 queue 双向队列 包含 getFirstgetLastaddFirstaddLastremoveFirstremoveLastArrayList底层采用数组完成 而LinkedList则是以一般的双向链表 double linkedlist 完成 其内每个对象除了数据本身外 还有两个引用 分别指向前一个元素和后一个元素 如果我们经常在List的开始处增加元素 或者在List中进行插入和删除操作 应该使用LinkedList 否则的话 使用ArrayList将更加快速 6 1Java中的类集框架 List接口类 2List类使用举例 使用List接口的实现类Collectioncol newArrayList col newLinkedList col newVector 以下代码使用这三个类输出效果一致col add newInteger 50 col add newFloat 3 14f col add hello col add newInteger 50 添加col add newDate Iteratoriter col iterator 获取每一元素 并输出while iter hasNext Objectitem iter next System out println item col remove newFloat 3 14f 删除System out println 集合长度 col size System out println col contains hello 是否有 hello col clear 清空案例6 1 6 1Java中的类集框架 List类实例 2List类使用举例 List接口使用举例Listlst newArrayList lst add newInteger 50 lst add hello lst add newDate lst add 0 newInteger 30 在指定位置添加 输出for inti 0 i lst size i System out println lst get i System out println hello是类集中的第 lst indexOf hello 个元素 lst remove newInteger 30 lst remove 1 根据编号删除 6 1Java中的类集框架 List类实例 3HashSet和TreeSet TreeSet是依靠TreeMap来实现的 TreeSet是一个有序集合 TreeSet中元素将按照升序排列 缺省是按照自然顺序进行排列 意味着TreeSet中元素要实现Comparable接口 我们可以在构造TreeSet对象时 传递实现了Comparator接口的比较器对象 HashSet是基于Hash算法实现的 其性能通常都优于TreeSet 我们通常都应该使用HashSet 在我们需要排序的功能时 我们才使用TreeSet 案例6 3 6 1Java中的类集框架 Set接口类 3Set类使用举例 使用Set接口的实现类Collectioncol newTreeSet col newHashSet col add newInteger 50 col add newInteger 50 col add hello col add newFloat 3 14f col add newDate 添加 添加过程会出异常 为什么 Iteratoriter col iterator 获取每一元素 并输出while iter hasNext Objectitem iter next System out println item col remove newFloat 3 14f 删除System out println 集合长度 col size System out println col contains hello 是否有 hello col clear 清空 考虑一下 与使用List接口的实现类相比 效果有什么不同 6 1Java中的类集框架 Set类实例 3集合类使用举例之Vector Vector是JDK1 2之前的类 向量 但为了程序的通用性 最好不要使用其特有的方法 下面的代码演示了其特有方法的使用Vectorv newVector v addElement aaaa 添加 等同于v add aaaa Objectobj v elementAt 0 获取指定位置的元素 等同于v get 0 v removeElement aaa 删除 等同于v remove aaa v removeElementAt 0 等同于v remove 0 v removeAllElements 清空 等同于v clear Enumerationenu v elements while enu hasMoreElements 输出System out println enu nextElement 6 1Java中的类集框架 Vector 4Map 映射 map 是一个存储关键字和值的关联或者说是关键字 值对的对象 给定一个关键字 可以得到它的值 关键字和值都是对象 关键字必须是唯一的 但值是可以被复制的 Map接口映射唯一关键字到值 关键字 key 是以后用于检索值的对象 给定一个关键字和一个值 可以存储这个值到一个Map对象中 当这个值被存储以后 就可以使用它的关键字来检索它 映射循环使用两个基本操作 get 和put 使用put 方法可以将一个指定了关键字和值的值加入映射 为了得到值 可以通过将关键字作为参数来调用get 方法 调用返回该值 6 1Java中的类集框架 Map 4Map接口的方法 voidclear 从调用映射中删除所有的关键字 值对booleancontainsKey Objectk 检查调用映射中是否包含关键字KbooleancontainsValue Objectv 检查调用映射中是否包含值VObjectget Objectk 返回与关键字k相关联的值booleanisEmpty 如果调用映射是空的 则返回true 否则返回falseObjectput Objectk Objectv 将一个键值对加入调用映射Objectremove Objectk 删除关键字等于k的键值对intsize 返回映射中关键字 值对的个数SetentrySet 返回包含了映射中的项的集合 Set 该集合包含了类型Map Entry的对象 这个方法为调用映射提供了一个集合 视图 SetkeySet 返回一个包含调用映射中关键字的集合 Set 这个方法为调用映射的关键字提供了一个集合 视图 Collectionvalues 返回一个包含了映射中的值的类集 这个方法为映射中的值提供了一个类集 视图 6 1Java中的类集框架 Map接口 4Map接口 Map接口的可用实现类主要有HashMap TreeMap Hashtable PropertiesHashtable Properties是JDK1 0 1 1中的HashMap对key进行散列 TreeMap按照key进行排序 和Set类似 HashMap的速度通常都比TreeMap快 只有在需要排序的功能的时候 才使用TreeMap 案例6 4 6 1Java中的类集框架 Map接口 4Map接口 对Map接口的操作 常常是转换为对类集的操作 一个Map可通过自身的方法转换为三个类集 Key Value Key ValueSetkeys map keySet Collectionsvalues map values Setkvs map entrySet 内容为Map Entry的集合 6 1Java中的类集框架 Map接口 4Map使用举例 Mapm newHashMap TreeMap Hashtable Properties均可m put 张三 m put 李四 m put 王五 m put 张三 覆盖掉第一个值System out println 是否有李四的电话号码 m containsKey 李四 m remove 王五 删除王五的记录StringzsCode String m get 张三 6 1Java中的类集框架 Map接口 4Map使用举例 输出所有电话薄 通过迭代KeySetkeys m keySet Iteratoriter keys iterator while iter hasNext Objectkey iter next Objectvalue m get key System out println key value 通过迭代MapEntry 一个Map Entry是一个Key value的组合Setentrys m entrySet Iteratoritr entrys iterator while itr hasNext Map Entryentry Map Entry itr next Stringkey String entry getKey Stringvalue String entry getValue System out println key value 6 1Java中的类集框架 Map接口 5Properties介绍 属性 Properties 是Hashtable的一个子类 它用来保持值的列表 在其中关键字和值都是字符串 String Properties类的一个有用的功能是可以指定一个默认属性 如果没有值与特定的关键字相关联 则返回这个默认属性 例如 默认值可以与关键字一起在getProperty 方法中被指定 如getProperty name defaultvalue 如果 name 值没有找到 则返回 defaultvalue Properties中主要提供了以下独特的方法 ObjectsetProperty Stringkey Stringvalue 添加值对 key与Value均为字符串StringgetProperty Stringkey 根据key检索对应的Valuevoidstore OutputStreamout Stringheader 将所有的键值对写入指定输出流voidload InputStreaminStream 从指定输入流中载入键值对voidlist PrintWriterout 用指定的流显示键值对内容 6 1Java中的类集框架 Properties JDK1 2对以前类集的替代 用ArrayList代替了Vector 用HashMap代替了Hashtable 用LinkedList代替了Stack 相对于ArrayList和HashMap Vector和Hashtable中所有的方法都是线程同步的 类集总结 类集框架为程序员提供了一个功能强大的设计方案以解决编程过程中面临的大多数任务 下一次当你需要存储和检索信息时 可考虑使用类集 记住 类集不仅仅是专为那些 大型作业 例如联合数据库 邮件列表或产品清单系统等所专用的 它们对于一些小型作业也是很有效的 例如 TreeMap可以给出一个很好的类集以保留一组文件的字典结构 TreeSet在存储工程管理信息时是十分有用的 坦白地说 对于采用基于类集的解决方案而受益的问题种类只受限于你的想象力 6 2泛型和枚举 6 2 1Java中的泛型6 2 2Java中的枚举 1泛型 泛型是JavaSE1 5的新特性 泛型的本质是参数化类型 也就是说所操作的数据类型被指定为一个参数 这种参数类型可以用在类 接口和方法的创建中 分别称为泛型类 泛型接口 泛型方法 Java语言引入泛型的好处是安全简单 6 2Java中的泛型 有两个类如下 要构造两个类的对象 并打印出各自的成员x publicclassStringFoo privateStringx publicStringFoo Stringx this x x publicStringgetX returnx publicvoidsetX Stringx this x x publicclassDoubleFoo privateDoublex publicDoubleFoo Doublex this x x publicDoublegetX returnx publicvoidsetX Doublex this x x 以上的代码实在无聊 6 2Java中的泛型 引入定义 对上面的两个类进行重构 写成一个类 publicclassObjectFoo privateObjectx publicObjectFoo Objectx this x x publicObjectgetX returnx publicvoidsetX Objectx this x x 6 2Java中的泛型 引入定义 强制转换 publicclassObjectFooDemo publicstaticvoidmain Stringargs ObjectFoostrFoo newObjectFoo newStringFoo HelloGenerics ObjectFoodouFoo newObjectFoo newDoubleFoo Double 33 ObjectFooobjFoo newObjectFoo newObject System out println strFoo getX StringFoo strFoo getX System out println douFoo getX DoubleFoo douFoo getX System out println objFoo getX objFoo getX 6 2Java中的泛型 引入定义 用Java5泛型来实现案例6 5 publicclassGenericsFoo privateTx publicGenericsFoo Tx this x x publicTgetX returnx publicvoidsetX Tx this x x 6 2Java中的泛型 如何定义 实例化 publicclassGenericsFooDemo publicstaticvoidmain Stringargs GenericsFoostrFoo newGenericsFoo HelloGenerics GenericsFoodouFoo newGenericsFoo newDouble 33 GenericsFooobjFoo newGenericsFoo newObject System out println strFoo getX strFoo getX System out println douFoo getX douFoo getX System out println objFoo getX objFoo getX 6 2Java中的泛型 使用泛型 2枚举 枚举的本质是类 定义枚举 可以有方法 包括构造方法 枚举类可以实现接口 每个枚举值可以实现接口带有抽象方法的枚举类 6 2Java中的枚举型 要点 枚举定义 publicenumENumColor Red Orange Yellow Green Blue publicStringgetColorString switch this ordinal case0 return ColorisRed case1 return ColorisOrange case2 return ColorisYellow case3 return ColorisGreen case4 return ColorisBlue default return invalidColor 6 2Java中的枚举型 定义 枚举实例案例6 6 publicclassENumExample publicstaticvoidmain String args for ENumColorcolor ENumColor values System out println color color getColorString System out println n nXXXXConstvalue ENumColor Yellow 6 2Java中的枚举型 应用 了解java lang包掌握包装类掌握String StringBuilder StringBuffer以下类 ClassObjectDateCalendarMath与Math random Random类 6 3常用类 Class类案例6 7 使用对象中的getClass 方法 使用静态forName 方法 使用自定义ClassLoader对象加载新类 创建的对象 或 或 无需声明 自动创建对象 通过 6 3Class类 特点 getClass 和getSuperclass classStoreString protectedStoreString privateStringname diana classStoreIntegerextendsStoreString protectedStoreInteger privateintdeptno publicclassClassDemo protectedClassDemo publicstaticvoidmain String args StoreStringobjString newStoreString StoreIntegerobjInteger newStoreInteger ClassobjClass objClass objString getClass System out println objString对象的类型是 objClass getName objClass objInteger getClass System out println objInteger对象的类型是 objClass getName objClass objClass getSuperclass System out println objInteger的父类是 objClass getName 6 3Class类 使用 Object类 所有类的父类默认情况下 用户定义的类扩展自Object类 6 3Object类 使用 Date类 Date类表示日期和时间提供操纵日期和时间各组成部分的方法Date类的最佳应用之一是获取系统当前时间 6 3Date类 使用 Date类的使用 voiddisplay StringstrDate strTime DateobjDate newDate System out println 今天的日期是 objDate longtime objDate getTime System out println 自1970年1月1日起 以毫秒为单位的时间 GMT time strDate objDate toString 提取GMT时间strTime strDate substring 11 strDate length 4 按小时 分钟和秒提取时间strTime 时间 strTime substring 0 8 System out println strTime 6 3Date类 使用 日期格式 importjava util importjava text classAAA publicstaticvoidmain String args Randomrnd newRandom intx rnd nextInt System out println HelloWorld x doubled Math random System out printl

温馨提示

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

评论

0/150

提交评论