Java .util包有很多实用的类、接口和异常。
向量类,堆栈类, 哈希表 ,枚举接口,日历类, 随机函数 类,映射接口和属性类。
Vector 类
vector是异构的,可以存储不同的对象,同时可以动态增加存储容量
所有向量操作都是针对Object类进行的,要将从向量空间取回的Object对象进行向下转型。
元素个数小于等于容量。
只能放进对象,基本数据类型要使用其包装类。
常用方法
方法 |
说明 |
Vector() |
构造空向量 |
Vector(int initialCapacity) |
初始化指定大小的向量 |
Vector(int initialCapacity,int capacityIncrement) |
capacityIncrement 每次扩充的值: 0 每次扩充一倍 |
add() |
添加元素 |
addElement() |
添加到末尾 |
capacity() |
返回容量大小 |
clear() |
清空 |
elementAt() |
返回指定位置的对象元素 |
elements() |
返回允许访问的每个向量元素的对象 |
firstElement() |
返回第一个对象元素 |
get() |
返回指定位置的对象元素 |
indexOf() |
查找指定对象元素的位置, 不存在返回-1 |
isEmpty () |
判断是否为空 |
remove() |
清除指定位置或者对象的元素 |
removeAllElements() |
清除所有元素 |
setElementAt() |
在指定位置设置指定的对象元素,覆盖原来的 |
setSize() |
设置容量大小 |
size() |
返回元素个数 |
trim ToSize() |
设置实际容量为内部的缓存容量 |
toArray () |
返回向量元素数组 |
subList() |
返回向量位置 |
removeElementAt() |
删除index所指的地方的对象 |
例子
import java.util .Vector;
public class VectorDemo {
public void test(){
Vector vectTemp = new Vector(,3);
System.out.println("元素个数: " + vectTemp.size());
System.out.println("容量大小: " + vectTemp.capacity());
// 添加元素
vectTemp.add(new Integer());
vectTemp.addElement(new Double(.0));
vectTemp.insertElementAt(new Float(.0f),1);
vectTemp.add("hello world");
vectTemp.add("wkk");
System.out.println("元素个数: " + vectTemp.size());
System.out.println("容量大小: " + vectTemp.capacity());
// toString () 会将所有元素按照 字符串 输出
System.out.println(vectTemp.toString());
// 第个元素
System.out.println(vectTemp.get());
}
public static void main(String[] args) {
new VectorDemo().test();
}
}
Stack类
后进先出: LIFO
可以接收任何类型对象
常用方法
方法 |
说明 |
Stack() |
构造空堆栈 |
empty() |
判断是否为空 |
peek() |
取得堆栈顶端的元素 |
pop() |
删除堆栈顶端的元素,并返回 |
push(Object item) |
入栈 |
search(Object item) |
检查堆栈中中是否有指定的对象 |
例子
import java.util.Stack;
public class StackDemo {
public void test(){
Stack stkTemp = new Stack();
System.out.println("堆栈是否为空: "+stkTemp.empty());
stkTemp.push(new Integer());
stkTemp.push("wkk");
// 查看元素位置
System.out.println("元素wkk位置:" + stkTemp.search("wkk"));
System.out.println("元素位置:" + stkTemp.search(new Integer(2)));
// 栈顶元素 peek
System.out.println(stkTemp.peek());
System.out.println(stkTemp.peek());
//栈顶元素 pop
System.out.println(stkTemp.pop());
System.out.println(stkTemp.pop());
}
public static void main(String[] args) {
new StackDemo().test();
}
}
- 栈顶元素所处位置为 1
- 栈顶的下一个元素的位置为 2
Hashtable 类
Dictionary类是一个抽象类,为字典表提供了一个统一的接口。
Hashtable 是一个键值对集合, 是抽象类Dictionary的一个具体实现,可以存储任意对象。
常用方法
方法 |
说明 |
Hashtable() |
构造空的哈希表 |
clear() |
清空 |
containsKey() |
对象是否是表中的关键字 |
containsValue() |
对象是否是表中的值 |
elements() |
返回允许访问每个对象元素的对象 |
get() |
根据指定的键返回其对应的值 |
put(Object key, Object value) |
将一组键值对放进表中 |
keys() |
返回允许访问每一个键的对象 |
size() |
键的个数 |
remove() |
依据指定的键删除对应的键值对 |
每一个键唯一对应一个键值对,一个哈希表中的 键不能重复
任何一个对象可以充当键,任何一个对象也可以充当值。
例子
import java.util.Hashtable;
public class HashtableDemo {
public void test(){
Hashtable hshTemp = new Hashtable();
hshTemp.put("",new Integer(1));
hshTemp.put("",new Integer(2));
// 元素个数
System.out.println("元素个数: " + hshTemp.size());
// 获取值
System.out.println(hshTemp.get(""));
// 判断是否有值
System.out.println("有值: " + hshTemp.containsValue(new Integer(1)));
// 哈希表转换为String
System.out.println(hshTemp);
}
public static void main(String[] args) {
new HashtableDemo().test();
}
}
enum eration接口
Enumeration对应着一个对象集合,一般是和Vector, Stack, Hashtable或者其他类共同实现完成。
使用它们的elements()方法来得到元素集合。
常用方法:
方法 |
说明 |
|
hasMoreElements() |
判断对象是否有多的元素 |
|
nextElement() |
获得对象集合的下一个对象 |
|
例子
import java.util.Vector;
import java.util.Enumeration;
public class EnumerationDemo {
public void test(){
Vector vctTemp = new Vector(,2);
Enumeration enumTemp ;
// 添加字符串
for(int intTemp =;intTemp < 4;intTemp++){
String string = "字符串" + intTemp;
vctTemp.addElement(string);
}
enumTemp = vctTemp.elements();
while(enumTemp.hasMoreElements()){
String strElement = (String)enumTemp.nextElement();
System.out.println("元素值: " + strElement);
}
}
public static void main(String[] args) {
new EnumerationDemo().test();
}
}
Enumeration 是一个接口 ,所以不能使用new() 方法来定义一个实例
Calendar类
工作原理,从本机电脑系统中取得系统时间、所处时区等数据来得到时间的具体信息。
常用属性
属性 |
说明 |
YEAR |
年 |
MONTH |
月 |
DAY_OF_MONTH |
当月的第几天 |
DAY_OF_WEEK |
当星期的第几天 |
DAY_OF_YEAR |
当前的第几天 |
WEEK_OF_YEAR |
当年的第几周 |
Calendar() |
构造函数,但是是protected的,不能直接new |
getInstance () |
获得日历类的实例 |
get(int field) |
获得某一属性的值,field为日历中定义的属性 |
set(int field) |
设置某一属性的值 |
getTime() |
返回日历所对应的日期(date) |
Clear(int field) |
清除日历类的某一个属性的值 |
例子
import java.util.Calendar;
public class CalendarDemo {
public void test(){
Calendar cldTemp = Calendar.getInstance();
// 打印基本的日历信息
System.out.println("年:" + cldTemp.get(Calendar.YEAR));
System.out.println("月: " + cldTemp.get(Calendar.MONTH));
System.out.println("日: " + cldTemp.get(Calendar.DATE));
// 具体日历信息
System.out.println("上/下午: " + cldTemp.get(Calendar.AM_PM));
System.out.println("小时: " + cldTemp.get(Calendar.HOUR));
System.out.println("分钟: " + cldTemp.get(Calendar.MINUTE));
System.out.println("秒: " + cldTemp.get(Calendar.SECOND));
System.out.println("毫秒: " + cldTemp.get(Calendar.MILLISECOND));
// 转换为数组
System.out.println("数组: " + cldTemp.toString());
}
public static void main(String[] args) {
new CalendarDemo().test();
}
}
- 整个日历是由一个数组存放的
- 日历类的构造函数是protected的,所以不能直接用new创建,而是用getInstance()获得
Random类
Random类是 伪随机数 生成器。
常用方法
方法 |
说明 |
Random |
构造方法 |
next boolean () |
返回一个boolean变量 true / false |
nextDouble() |
返回一个double数 0.0 – 1.0 |
nextFloat() |
0.0 – 1.0 |
nextInt() |
|
nextLong() |
|
nextGaussian() |
根据一个伪离散 高斯分布 生成一个双精度随机数 0.0 – 1.0 |
例子
import java.util.Random;
public class RandomDemo {
public void test() {
Random rndTemp = new Random();
System.out.println("布尔: " + rndTemp.nextBoolean());
System.out.println("double: " + rndTemp.nextDouble());
System.out.println("float: "+ rndTemp.nextFloat());
System.out.println("long: " + rndTemp.nextLong());
System.out.println("int: " + rndTemp.nextInt());
//以内 整型
System.out.println("int(以内): " +rndTemp.nextInt(10));
}
public static void main(String[] args) {
new RandomDemo().test();
}
}
- nextInt(n) 返回[0, n) 的整数 -> n>0
Map接口
Map(映射)接口定义了一个框架,用来实现基本的映射数据结构。
Hashtable类实现了Map接口。
Map接口定义了在索引的基础上存储和检索信息的方法,Map接口中的键可以是任何类型。
常用方法:
基本都是针对键和键对应的对象
方法 |
说明 |
clear() |
清除所有 |
containsKey() |
是否有指定的键 |
containsValue() |
是否有指定的值 |
entrySet() |
返回映射对象所对应的集合 |
hashCode () |
返回映射对象本身的哈希码 |
isEmpty() |
是否为空 |
keySet() |
返回键的集合 |
put() |
添加键值对 |
putAll(Map t) |
将已知的映射t中的所有映射添加到本映射中 |
remove() |
根据键删除映射 |
size() |
返回映射个数 |
values() |
返回值的集合 |
Map是一个接口,需要实现。
HashMap 类实现了Map接口。
例子
import java.util.HashMap;
import java.util.Set;
import java.awt.Rectangle;
public class HashMapDemo {
public void test(){
HashMap hmTemp = new HashMap();
// 构造数组,预存放键对象
Object objectKeyTemp [] = new Object[];
hmTemp.put("small",new Rectangle(,0,5,5));
hmTemp.put("midium",new Rectangle(,0,15,15));
hmTemp.put("large",new Rectangle(,0,30,30));
// 个数
System.out.println("个数: " + hmTemp.size());
// 是否含有键small
System.out.println("是否含有small键: " + hmTemp.containsKey("small"));
System.out.println("是否含有 Rectangle (0,0,15,15): "+hmTemp.containsValue(new Rectangle(0,0,15,15)));
// 返回映射中键的集合
Set setTemp = hmTemp.keySet();
objectKeyTemp = setTemp.toArray();
for (int i =; i < objectKeyTemp.length; i++) {
if(objectKeyTemp[i] instanceof String) {
String s = (String) objectKeyTemp[i];
System.out.println("key的值: " + s);
}
}
}
public static void main(String[] args) {
new HashMapDemo().test();
}
}
Properties类
主要用于读取Java的配置文件
在Java中,其配置文件常为.properties文件,是以键值对的形式进行参数配置的。
Properties类是Hashtable类的子类,有Hashtable类对象的所有方法
常用方法
方法 |
说明 |
getProperty () |
依据指定的键或者值返回属性值 |
load( InputStream inStream) |
从指定的输入流中读取键和其指定对象进行加载 |
propertyNames() |
将属性对象中的键返回到枚举接口 |
setProperty (String key,String value) |
设定属性对象中的一组属性对象对,其中键和值都是String类型 |
store(OutputStream out,String header) |
将属性对象中的属性对象加载到指定的输出流中,同时指定名字 |
例子
配置文件: File .properites
age =
name = wkk
package com.wkk;
import java.io.FileInputStream;
import java.io.FileNotFound Exception ;
import java.util.Enumeration;
import java.util.Properties;
import java.io.IOException;
public class PropertiesDemo {
public void test(){
Properties ppTemp = new Properties();
try{
ppTemp.load(new FileInputStream("src/com/wkk/file.properties"));
}catch (FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
Enumeration content = ppTemp.propertyNames();
while(content.hasMoreElements()){
String key = (String)content.nextElement();
String value =ppTemp.getProperty(key);
System.out.println(key + ":" + value);
}
}
public static void main(String[] args) {
new PropertiesDemo().test();
}
}