util包中几个类的用法:Date类、Calendar类、Random类、堆栈向量哈希表类(Stack、Vector、Hashtable)

来源:互联网 发布:mac svn 版本号 编辑:程序博客网 时间:2024/05/17 08:42

util包介绍:

Date类,提供日期。

Calendar类,产生和获取日期及时间。

Random类,产生各种类型的随机数。

还提供了堆栈(Stack)、向量(Vector,可动态增长的数组,类似于链表,但比链表简单)、位集合(Bitset,位的集合,占用很小的资源)、哈希表(Hashtable)等类表示相应的数据结构。

Date类的常用方法:

一、如何制定Date的时间:

(1)public Date()

以当前时间为参数

(2)public Date(long date)

以1970/1/1为基础,向后延伸date的毫秒数的时间。

这个date可以通过以下方便的方法获得:

long=Date.parse("Mon 6 Jan 1997 13:3:00");

这样就会方便的获得毫秒数。

(3)public Date(String s)

此方法更简单,将(2)中的字符串作为参数就可以了。

此外还有几种方法,不过,由于这些方法都过时了(除了第一、二种),所以不再介绍。

替代方法是:

Calendar.set(year + 1900, month, date)

Calendar.set(year + 1900, month, date, hrs, min)

Calendar.set(year + 1900, month, date, hrs, min, sec)

在没有提供时分秒的地方,默认是:12:00:00 AM

对于像2月31日这样的错误格式,程序自动转换成3月3日,即向后延期三天。

二、其它常用方法

最常用的就是setXXX和getXXX这一类的方法。

Calendar日历类的常用方法:

此类是抽象类,此类可以使用年月日时分秒来表示日期。此类的主要功能是完成日期(Date)类和普通日期表示法(即用一组整形域如YEAR、MONTH、DAY、HOUR表示日期)之间的转换。

日期的格式化用到了dateFormat类,这个类提供了把各种字符串转换为标准的时间的能力。此类在java.text包中。

由于此类是抽象类,所以,常用的类是GregorianCalendar。

构造方法摘要:

GregorianCalendar()

在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。

GregorianCalendar(int year, int month, int dayOfMonth)

在具有默认语言环境的默认时区内构造一个带有给定日期设置的 GregorianCalendar。

GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute)

为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。

GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second)

为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。

GregorianCalendar(Locale aLocale)

在具有给定语言环境的默认时区内构造一个基于当前时间的 GregorianCalendar。

GregorianCalendar(TimeZone zone)

在具有默认语言环境的给定时区内构造一个基于当前时间的 GregorianCalendar。

GregorianCalendar(TimeZone zone, Locale aLocale)

在具有给定语言环境的给定时区内构造一个基于当前时间的 GregorianCalendar。

TimeZone可以使用TimeZone.getTimeZone("PST");来获取,后面的PST代表太平洋时区,这个由ISO规定。

Locale也是由ISO规定的简写字符串。

例子:将字符串转换为Date对象:

public class bb {

public static void main(String[] args) {

// TODO Auto-generated method stub

SimpleDateFormat df = new SimpleDateFormat("yyyyMMddhhmmss");

String dateString = "20071128175545";

try {

Date date = df.parse(dateString);

System.out.println(date.toLocaleString());

}

catch (Exception ex)

{ System.out.println(ex.getMessage());}

}

}

获取当前时间:

Calendar.getInstance().getTime()//返回一个Date,指向当前时间

Calendar.getInstance().getTimeInMillis()//返回一个long,精确到毫秒,指向当前时间,常用于Random的种子。

Random类的常用方法:

在Java.lang.Math()中也有一个Random类,不过只能产生double类型的随机数。而util包中的类有多种随机数的产生方式。

Vector向量类的使用方法:

比较晚一些的类是ArrayList,两个功能基本一致。

Vector可以随意插入不同的类的对象,并可以不初始化长度。不过Vector只能存放复杂类型,即存放Object及其子类的对象,而初等数据类型是不可以的。不过可以用封装的方法,把初等数据类型转换为对象,这样会曾加系统开销。

Vector的三种构造函数:

public vector()

public vector(int initialcapacity,int capacityIncrement)//初始长度,每次增加的长度

public vector(int initialcapacity)//默认每次增长一个

插入数据:

addElement(object obj)

如何插入一个初等数据类型呢?可以使用如下封装方法:

Integer integer1=new Integer(1);

创建一个对象,然后就可以插入到Vector中。

setElementAt(object obj,int index)

在指定位置插入数据,如果有元素则覆盖。

insertElementAt(object obj,int index)

这个也是在指定位置插入数据,不过,元素存在的话,就会将这个元素及其后续元素的顺序往后延一个。

删除数据:

removeElement(object obj)

如果存在相同的元素,则删除第一个。

removeAllElement()

删除全部元素。

removeElementAt(int index)

删除指定索引处的数据。

查询数据:

indexOf(object obj)

找出第一个相同的obj的索引,没有匹配的数据则返回-1

indexOf(object obj,int index)

从指定位置开始查找。

lastIndexOf(Object obj)

从尾部开始搜索。

lastIndexOf(Object obj,int index)

从尾部查找到指定位置。

Vector的遍历方法:

Enumeration enum=v1.elements();

while(enum.hasMoreElements())

System.out.print(enum.nextElement);

Enumeration是util包中的一个接口,Vector实现了这个接口,调用elements方法可以返回这个接口。

Stack栈类的常用方法:

Stack类是Vector类的子类。

push(object Hem);

Object pop();

Object peek();//返回栈顶元素,但不弹出

int search(object obj);//返回对象位置

boolean empty();//判断栈是否为空

Hashtable哈希表的常用方法:

构造函数:

Hashtable();

Hashtable(int initialcapacity);//定义初始的容量

Hashtable(int initialCapacity,float loadFactor);//初始容量,装载因子,范围是0~1,例如:0.9的意思是,当Hashtable元素超过容量的90%时,自动扩充容量

常用方法:

Object get(Object key);

boolean containsKey(Object key);

boolean contains(Object value);

Object remove(Object key);

void clear();

注意:利用get方法获取的数据,是Object对象,需要进行强制类型转换才能使用。

Hashtable的遍历:

Enumeration keys();//可以遍历所有的key

Enumeration elements();//可以遍历所有的元素

Enumeration接口的使用方法参见上文。

原创粉丝点击