CH_6_Java的基本类库2._第1页
CH_6_Java的基本类库2._第2页
CH_6_Java的基本类库2._第3页
CH_6_Java的基本类库2._第4页
CH_6_Java的基本类库2._第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、public class public class 第第0 x060 x06讲讲 Java的基本类库的基本类库 extends extends Java 语言与网络编程语言与网络编程 java.utiljava.util包提供了许多实用的类和数据结构类包提供了许多实用的类和数据结构类 日期类、日历类、随机数类;日期类、日历类、随机数类; 向量类、哈希表类、列表类和堆栈类向量类、哈希表类、列表类和堆栈类等等 6.2.1 日期日期时间相关类(时间相关类(Date,Calendar) 6.2.2 Vector类(向量类(向量类)与类)与ArrayList类类 6.2.3 Hashtable publ

2、ic int getMonth(); public int getDate(); public int getDay(); public int getHours(); public int getMinutes(); public int getSeconds(); 2021-7-11 中国矿业大学计算机科学与技术学院 4 在 JDK 1.1 之前,类 Date 有两个其他的函数。它允许把日期解释为年、 月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。不过, 这些函数的 API 不易于实现国际化。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使

3、用 DateFormat 类来格式化和解析日 期字符串。Date 中的相应方法已废弃。 日期日期的比较的比较 public boolean before(Date when); public boolean after(Date when); public boolean equal(Object obj); public String toString() java.util.Date d=new java.util.Date(); System.out.println(d); String a=d.toString(); System.out.println(a); 举例举例: : 202

4、1-7-11 中国矿业大学计算机科学与技术学院 5 Calendar类类 是一个是一个抽象抽象类类,提供了一个类方法,提供了一个类方法 getInstance, 以获得此类型的一个通用的对象,其日历字段以获得此类型的一个通用的对象,其日历字段 已由当前日期和时间初始化:已由当前日期和时间初始化: Calendar rightNow = Calendar.getInstance(); 2021-7-11 中国矿业大学计算机科学与技术学院 6 set方法方法 void set(int field, int value) void set(int year, int month, int date)

5、 void set(int year, int month, int date, int hourOfDay, int minute) void set(int year, int month, int date, int hourOfDay, int minute, int second) 2021-7-11 中国矿业大学计算机科学与技术学院 7 getTime方法:方法: Date getTime() Returns a Date object representing this Calendars time value (millisecond offset from the Epoch

6、) toString方法:方法: String toString() Return a string representation of this calendar DateFormat类(类(java.text包)包) DateFormat 是日期是日期/时间格式化子类的时间格式化子类的抽象类抽象类, 它以与语言无关的方式格式化并解析日期或它以与语言无关的方式格式化并解析日期或时时 间间 格式化一个当前语言环境下的日期,可使用某格式化一个当前语言环境下的日期,可使用某 个静态工厂方法:个静态工厂方法: myString = DateFormat.getDateInstance().forma

7、t(myDate); 要格式化不同语言环境的日期,可在要格式化不同语言环境的日期,可在 getDateInstance() 的调用中指定的调用中指定它它 DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.CHINA); 2021-7-11 中国矿业大学计算机科学与技术学院 8 6.2.2 Vector类(向量类)与类(向量类)与ArrayList类类 可以可以实现实现可增长的对象可增长的对象数组数组 同步同步 2021-7-11 中国矿业大学计算机科学与技术学院 9 相似点相似点: 都是都是类,均可保存类,均可

8、保存列表列表 不同点:不同点: 数组数组(Arrays)(Arrays)一旦一旦定义,其定义,其空间长度不可变空间长度不可变,而,而向向 量量(Vector)(Vector)和数组列表和数组列表(ArrayList)(ArrayList)的的空间能够在空间能够在运运 行时动态的扩充或行时动态的扩充或缩减缩减 数组中可以存放基本数据类型,也能存放对象。数组中可以存放基本数据类型,也能存放对象。向向 量和数组列表中只能存储量和数组列表中只能存储对象对象。如果想在向量中存储如果想在向量中存储 基本数据类型,可通过基本数据类(如基本数据类型,可通过基本数据类(如IntegerInteger) Vect

9、or、ArrayList和和Arrays的的异同异同 2021-7-11 中国矿业大学计算机科学与技术学院 10 向量类的构造方法向量类的构造方法: : Vector(int capacity, int capacityIncrement) /使用使用指定的初始容量和容量增量构造一个空的指定的初始容量和容量增量构造一个空的向量向量 Vector(int capacity) Vector() 数组列表类数组列表类的构造方法的构造方法: : ArrayList(int capacity) /构造构造一个具有指定初始容量的空一个具有指定初始容量的空列表列表 ArrayList() /构造构造一个初始

10、容量为一个初始容量为 10 的空的空列表列表 创建创建向量、数组列表向量、数组列表 2021-7-11 中国矿业大学计算机科学与技术学院 11 创建向量、数组列表的创建向量、数组列表的语法语法: Vector 向量名称向量名称= new Vector(容量容量); ArrayList 数组列表名称数组列表名称= new ArrayList (容量容量); /这里的元素类型不能是基本这里的元素类型不能是基本数据类型数据类型 创建向量、数组列表创建向量、数组列表 2021-7-11 中国矿业大学计算机科学与技术学院 12 Vector vector=new Vector(5); ArrayList

11、 arrayList=new ArrayList(5); 在向量中添加在向量中添加元素元素 某个函数某个函数 的栈空间,的栈空间, 此函数中此函数中 定义的变定义的变 量只在此量只在此 函数运行函数运行 时存在时存在 0 x3000 栈内存栈内存 堆内存堆内存 vector1 0 x3000 向量首地址向量首地址 姚姚 明明 韦韦 德德 纳纳 什什 创建创建向量、数组列表后向量、数组列表后,向量、数组向量、数组列表中并没有元素,列表中并没有元素, 需要通过需要通过add方法将元素填入到方法将元素填入到向量、数组向量、数组列表中去:列表中去: boolean add(E e); 例如:例如: 2

12、021-7-11 中国矿业大学计算机科学与技术学院 13 vector.add(姚明); vector.add(韦德); vector.add(纳什); 重要方法重要方法 E get(int index) /vector,arrayList E elementAt(int index) /vector E firstElement() /vector int size() /vector,arrayList int capacity() /vector E remove(int index) /vector,arrayList int indexOf(Object o) /vector,arr

13、ayList boolean isEmpty() /vector,arrayList E set(int index, E element) /vector,arrayList Object toArray() /vector,arrayList 2021-7-11 中国矿业大学计算机科学与技术学院 14 举例:举例:VectorVector的自动容量扩充的自动容量扩充能力能力 2021-7-11 中国矿业大学计算机科学与技术学院 15 import java.util.*; public class VectorDemo public static void main(String args

14、) Vector vector = new Vector(3); System.out.println(vector.capacity(); vector.add(张三); vector.add(李四); vector.add(王五); vector.add(赵六); System.out.println(vector.capacity(); System.out.println(vector.size(); 往往向量中插入元素向量中插入元素 void insertElementAt(E obj, int index) 例:例: vector. insertElementAt(小孙小孙,1);

15、 /在下标在下标1插入插入元素元素 张三张三李四李四王五王五赵六赵六 小孙小孙 张三张三李四李四王五王五赵六赵六 2021-7-11 中国矿业大学计算机科学与技术学院 16 重要方法重要方法(续续) 修改修改向量中的元素向量中的元素 void setElementAt(E obj, int index); 例如例如:vector.setElementAt(小孙小孙,0); 删除删除向量中的元素向量中的元素 例如:例如:vector. removeElementAt(1); /删除下标为删除下标为1的元素的元素 清清空向量空向量 vector.clear(); /向量中的所有元素都被删除向量中的

16、所有元素都被删除 2021-7-11 中国矿业大学计算机科学与技术学院 17 重要方法重要方法(续续) 判断判断向量中是否有与某对象等值的对象向量中是否有与某对象等值的对象 boolean contains(Objectboolean contains(Object o)o) ; vector1.contains(张三张三); 哈希表(哈希表(Hashtable)是是一种支持一种支持对对元素元素进行快速检索进行快速检索的的 线性表线性表,主要特征是表中元素的平均检索时间与表中的元素,主要特征是表中元素的平均检索时间与表中的元素 个数无关,因为哈希表是利用个数无关,因为哈希表是利用“关键字关键字

17、KK元素元素V”V”的形式进的形式进 行存储的行存储的列表列表 关键字的关键字的值值全表唯一全表唯一,可,可通过关键字查找到对应的元素通过关键字查找到对应的元素。 关键字关键字K K和元素和元素V V的类型不能是基本数据类型,的类型不能是基本数据类型, 任何任何非非null null 对象都可以用作键或值对象都可以用作键或值 关键字关键字1元素元素1 关键字关键字2元素元素2 关键字关键字3元素元素3 一条记录一条记录 6.2.3 Hashtable public class HashtableDemo public static void main(String args) Hashtabl

18、e h = new Hashtable(); / 创建哈希表创建哈希表 h.put(1001, 张三);/ 添加记录 h.put(1002, 李四); h.put(1003, 王五); System.out.println(h.get(1002); / 根据关键字查找值 匹配匹配时,系统会自动调用关键字的时,系统会自动调用关键字的equalsequals方法,如方法,如 果结果为果结果为truetrue且两个关键字的且两个关键字的hashCode()hashCode()方法的结方法的结 果也相等,则匹配果也相等,则匹配成功成功 l 为了成功地在哈希表中存储和获取对象,用作键的对象为了成功地在哈

19、希表中存储和获取对象,用作键的对象 必须实现必须实现 hashCode hashCode 方法和方法和 equals equals 方法方法 l 如果没有覆盖如果没有覆盖equalsequals方法和方法和hashCodehashCode方法,则方法,则系统调用系统调用 ObjectObject类的类的equalsequals方法方法和和hashCodehashCode方法方法 l Java 库库中的类都按照以上要求覆盖中的类都按照以上要求覆盖了了 equals 和和 hashCode 方法方法 l 关键字的关键字的类如果是类如果是我们自己定义的类,我们自己定义的类,则必须则必须覆盖覆盖 eq

20、ualsequals方法和方法和hashCodehashCode方法方法 关键字匹配规则?关键字匹配规则? 2021-7-11 中国矿业大学计算机科学与技术学院 21 例如:下列程序匹配关键字失败例如:下列程序匹配关键字失败 2021-7-11 中国矿业大学计算机科学与技术学院 22 import java.util.*; class A int date; public class HashtableFailDemo public static void main(String args) Hashtable h = new Hashtable(); A a1 = new A(); a1.date = 10; A a2 = new A(); a2.date = 10; h.put(a1, 张三); System.out.println(h.get(a2); 在类在类A A中覆盖中覆盖ObjectObject类的类的equalsequals方法和方法和hashCodehashCode方法方法 2021-7-11 中国矿业大学计算机科学与技术学院 23 class A int date; public boolean equals(Object obj) A aobj = null; if (obj instanceof A) aobj = (A) obj

温馨提示

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

评论

0/150

提交评论