Professional Documents
Culture Documents
util 包
回顾
单 词 说 明
utility 有用的,实用的
date 日期
calendar 日历,历法
random 随意,任意,胡乱的
list 列表
link 链条,链状物
hash 散乱的,一般指散列码
map 地图
vector 向量,矢量
本章目标
了解 java.util 包
运用如下类进行 Java 编程:
– Date 类
– Calendar 类
– Random 类
使用 Collection 接口及其实现类:
– ArrayList 类
– LinkedList 类
– Vector 类
掌握 HashMap 类
java.util 包简介
Date 类对象用来表示时间和日期;
该类提供一系列操纵日期和时间各组成部
分的方法;
Date 类最多的用途是获取系统当前的日期
和时间。
Date 类的构造方法
Date() 使用系统当前时间创建日期对象
方 法 原 型 说 明
设置日期对象,以表示自 1970 年 1 月 1 日
void setTime(long time)
起的指定毫秒数
如果两个日期对象完全相同,返回 true ,
boolean equals(Object obj)
否则返回 false
// 截取字符串中表示时间的部分
String strDate = date.toString();
String strTime = strDate.substring(11, (strDate.length() - 4));
System.out.println(strTime);
strTime = strTime.substring(0, 8);
System.out.println(strTime);
}
}
Calendar 类
Calendar 类也是用来操作日期和时间的类,但
它可以以整数形式检索类似于年、月、日之类的
信息;
Calendar 类是抽象类,无法实例化,要得到该
类对象只能通过调用 getInstance 方法来获得;
Calendar 对象提供为特定语言或日历样式实现
日期格式化所需的所有时间字段。
Calendar 类的常用方法
方 法 原 型 说 明
Calendar getInstance() 返回默认地区和时区的 Calendar 对象 (static)
// 打印 Calendar 对象的各个组成部分的值
System.out.print(" 当前系统时间: ");
System.out.print(cal.get(Calendar.YEAR) + " 年 ");
System.out.print((cal.get(Calendar.MONTH) + 1) + " 月 ");
System.out.print(cal.get(Calendar.DATE) + " 日 ");
System.out.print(cal.get(Calendar.HOUR) + ":");
System.out.print(cal.get(Calendar.MINUTE) + ":");
System.out.println(cal.get(Calendar.SECOND));
// 将当前时间添加 30 分钟,然后显示日期和时间
cal.add(Calendar.MINUTE, 30);
Date date = cal.getTime();
System.out.println(" 将当前时间添加 30 分钟后的时间: " + date);
}
}
Random 类
Random 类专门用来生成随机数;
该类的构造方法有 2 种重载方式。
构 造 方 法 说 明
使用 seed 作为随机种子创建一个
Random(long seed)
Random 类对象
Random 类的常用方法
方 法 原 型 说 明
从随机数生成器返回下一个高斯分布的双精度
double nextGaussian()
值。中间值为 0.0 ,而标准差为 1.0
Random 类示例
// 随机生成 20 个随机整数,并将其显示出来
for (int i = 0; i < 20; i++) {
int num = rand.nextInt();
System.out.println(" 第 " + (i + 1) + " 个随机数是: " + num);
}
}
}
集合
集合是将多个元素组成一个单元的对象;
类似于数组,但数组最大的缺点是:长度受到限制(一经
创建,就不可再改变),并且只能存放相同数据类型的元
素;
集合的长度没有限制,可以存放任意多的元素,而且元素
的数据类型也可以不同;
集合还提供一系列操纵数据的方法,如存储、检索等等。
集合框架的优点
提供有用的数据结构和算法,从而减少编
程工作;
提高了程序速度和质量 , 因为它提供了高
性能的数据结构和算法;
允许不同 API 之间的相互操作, API 之
间可以来回传递集合;
可以方便地扩展或改写集合。
java.util 包中的集合类
为了满足不同场合的需要, java.util 包中
包含有一系列集合类;
如: ArrayList 类、 LinkedList
类、 Vector 类、 HashMap 类等等,接下
来将逐一进行介绍;
集合类中只能存放对象,而不能存放原始
数据类型的元素,所以当有原始数据类型
需要存放时,只能将其转换成相应的包装
类对象。
ArrayList 类
ArrayList 是长度可变的对象引用数组,称为动
态数组;
随着元素的添加,元素数目的增大,数组容量也
会随之自动扩展;
访问和遍历数组元素时, ArrayList 的性能优越
;
ArrayList 类继承了 AbstractList 类并实现了 List
接口。
ArrayList 类的构造方法
构 造 方 法 说 明
方 法 原 型 说 明
int size() 返回 ArraList 对象的大小,即元素的数量
向 ArrayList 对象中添加一个元素,该元素可
boolean add(Object element)
以是任何类的对象
LinkedList 类用于创建链表数据结构;
链表中元素的数量不受任何限制,可以随
意地添加和删除;
与 ArrayList 相比,如果需要频繁地添加和
删除元素, LinkedList 的性能更加优越;
LinkedList 类继承了
AbstractSequentialList 类,并实现了 List
接口;
LinkedList 类的构造方法
构 造 方 法 说 明
LinkedList() 创建一个空链表
LinkedList(Collection c) 根据指定的集合创建链表
LinkedList 类的常用方法
方 法 原 型 说 明
int size() 返回链表的大小,即元素的数量
向链表中添加一个元素,该元素可以是任何类
boolean add(Object element)
的对象
方 法 原 型 说 明
构 造 方 法 说 明
方 法 原 型 说 明
int size() 返回 Vector 对象的大小,即元素的数量
向 Vector 对象中添加一个元素,该元素可以
boolean add(Object element)
是任何类的对象
方 法 原 型 说 明
int capacity() 返回 Vector 对象的容量,即元素的个数
// 往 Vector 中添加元素
vec.addElement("Java");
vec.addElement("C#");
vec.addElement("Oracle");
vec.addElement("C++");
vec.addElement("HTML");
vec.removeElement("C++"); // 删除其中的元素
System.out.println(vec.toString());
}
}
HashMap 类
HashMap 以键值对的形式存储元素;
对于 HashMap 来说,不存在索引,也就
是说不可以通过索引来访问元素,只能通
过键去访问值,如要快速检索元素的
话, HashMap 性能优越;
由于没有索引,所以 HashMap 中元素的
存放是没有顺序的;
HashMap 类继承了 AbstractMap 类,并
实现了 Map 接口。
HashMap 类的构造方法
构 造 方 法 说 明
创建一个指定容量和默认负载系数的
HashMap(int initialCapacity)
HashMap 对象
方 法 原 型 说 明
int size() 返回 HashMap 对象的大小,即元素的个数
向 HashMap 对象中添加一个元素,必须指定
Object put(Object key, Object value) 该元素的键和值
java.util 包中包含一系列常用的工具类和集合框
架类;
Date 类和 Calendar 类用来操作日期和时间;
可以使用 Random 类的对象来生成随机数;
集合框架提供了一系列复杂的数据结构和优越的
算法;
ArrayList 类可以创建动态数组;
LinkedList 类可以创建链表结构;
Vector 类可以创建线程同步的动态数组;
HashMap 类可以创建键值对集合。