CSDN博客

img lwqadmin

通用集合库

发表于2004/9/20 17:57:00  745人阅读

4.4 通用集合库

   

1.The Collections API

. 一个collection是一个对象,它包含了一组object对象。
. The Collection API 包含了3个接口 ,它将object组织为:
. Collection : 一组 objects ,没有特殊的顺序,允许重复元素。
. 个List(列表):必须按特定的顺序容纳元素,允许重复元素。
. 一个Set(集):没有特殊的顺序,不可包含任何重复的元素。



见例题:
setExmple.java
ListExmple.java

2.Map

. Map(接口) 维持“键-值”对应关系(对),以便通过一个键查找相应的值

.HashMap基于一个散列表实现(用它代替Hashtable)。针对“键-值”对的插入和检索,这种形式具有最稳定的性能。

见例题:
PrintingContainers.java
填充containers:只能List, 不能Set or Map
见例题:
FillingLists.java
Container 缺点:
. 不知道数据类型
. 必须自己做类型转换

见例题:Cat.java
Dog.java
CatsAndDogs.java



比较List, LinkedList, ArrayList
List(接口) 顺序是List最重要的特性:
. 元素按照规定的顺序排列。
.List为Collection添加了大量方法:
. 在List中部插入和删除元素
. (ListIterator(列表反复器),利用它可在一个列表里朝两个方向遍历,同时插入和删除位于列表中部的元素
比较List, LinkedList, ArrayList
. ArrayList: 允许我们快速访问元素,但在从列表中部插入和删除元素时,速度却嫌稍慢。一般只应该用ListIterator对一个ArrayList进行向前和向后遍历,不要用它删除和插入元素;

. LinkedList:可以高效率地在列表中部进行插入和删除操作。但在进行随机访问时,速度慢. 提供了addFirst(),addLast(),getFirst(),getLast(),removeFirst()以及removeLast()(未在任何接口或基础类中定义),以便将其作为一个规格、队列以及一个双向队列使用
用LinkedList实现队列(queue)操作。
见例题:Queue.java
Map综合例题:
Map1.java
数组
Arrays类为所有基本数据类型的数组提供了一个过载的sort()和binarySearch(),它们亦可用于String和Object。

见例题:Array1.java

3.反复器

Iterators反复器:
反复器是用来提取集合中的元素的。
. An Iterator of a Set 是无序的。
. ListIterator of a List 能前后遍历移动

Iterators反复器:
见例题:

CatsAndDogs2.java
HamsterMaze.java
见Iterators反复器和Collection 的综合例题:Collection1.java

4.排序和搜索

可用与数组相同的形式排序和搜索一个列表(List)。用于排序和搜索列表的静态方法包含在类Collections中,sort(List)用于对一个实现了Comparable的对象列表进行排序;binarySearch(List,Object)
数组元素可以是基本数据类型和引用数据类型。数组元素类型明确。可以是多维。缺点是一旦创建好后,不能变大小。
Colloction存放一组单个元素,而Map存放一组元素对
List向数组一样存放有序的元素,但不能存放基本数据类型,读取元素时需要类型转换。
ArrayList用于随机读取数据。LinkedList用于从中间插入删除大量数据。
LinkedList 用于实现队列和堆栈
Map 用于连接一对object-object。HashMap用于快速查找。

. Set 不能接受重复元素。HashSet用于提供快速查找。

5.Collections类

1.Enumeration 接口

Enumeration 接口使用两个方法来检索一系列对象或值:
nextElement():获得下一个对象
hasMoreElements():检查序列中是否还有更多的对象

注意:
Enumeration 接口的的元素只能被访问一次。
2.Vector 类
Vector 类实现了可增长数组的功能。数组既可以变大也可以变小。
功能:增加、删除和插入对象;测试Vector中的内容和检索指定的对象。

见例题:example66Vector.txt

3.堆栈 Stack
Stack类扩展了Vector类,继承了Vector类的方法。它实现了后进先出的功能。

创建Stack类: new Stack()
常用方法:
Object push(Object o)
Object pop()
Object peek()
boolean empty()
int search(Object o)

见例题:example67Stack.txt
4.散列表 Hashtable
散列表也可以存储未定数目的对象对(key/element)。它可以实现将不同类型的对象放入同一个散列表。
一些常用的方法有:
put(Object key, Object value)
get(Object key)
remove(Object Key)
elements()
keys()
size()
isEmpty()

见例题: example68HashApp.txt
散列表可以实现将不同类型的对象放入同一个散列表。它要与强制类型转换相配合。

见例题:example68Hashtable.txt

5.StringTokenizer 类
StringTokenizer 类用来创建String对象的语法分析程序。它根据一组定界符对字符串进行语法分析。它执行了Enumeration接口。

一些常用的方法有:
hasMoreTokens()
nextToken()
countTokens()
nextElement()
hasMoreElements()

见例题:example69Token.txt
6.Math 类
Math类中包含了一组静态数学方法,包括:代数、三角、指数、对数、随机数等。
例题:
public class MathApp {

public static void main(String[] args) {
System.out.println(Math.E);
System.out.println(Math.PI);
System.out.println(Math.abs(-1));
System.out.println(Math.max(3,5));

for(int i=0;i<5;i++)
System.out.print(Math.random()+" ");
System.out.println();
}
}

 

0 0

相关博文

我的热门文章

img
取 消
img