来源:http://www.bjsxt.com/
后续内容:
队列Queue与Deque
Enumeration
Hashtable与Properties
引用类型(强软弱虚)与WeakHashMap
IdentityHashMap与EnumMap
同步控制与只读设置
开源工具包:
——Guava:Google Collection
——Apache:Commons Collection
容器总结
1、S02E129_01Queue接口队列模拟银行业务_自定义堆栈
package com.test.queue;
import java.util.ArrayDeque;
import java.util.Queue;
/**
* 使用队列模拟银行存款业务
*/
public class IQueue {
public static void main(String[] args) {
Queue<Request> queue = new ArrayDeque<Request>();
//模拟排队情况
for (int i = 0; i < 5; i++) {
final int num = i;//new Request()不能直接访问i
queue.offer(new Request() {
@Override
public void deposit() {
System.out.println("第"+num+"个人办理业务,存款额度为:"+Math.random()*10000);
}
});
}
dealWith(queue);
}
//处理业务
public static void dealWith(Queue<Request> queue){
Request request = null;
while(null != (request = queue.poll())){
request.deposit();
}
}
}
interface Request{
void deposit();//存款
}
package com.test.queue;
import java.util.ArrayDeque;
import java.util.Deque;
/**
* 使用队列实现自定义堆栈
* <br>1、弹
* <br>2、压
* <br>3、获取头
*/
public class IStack<E> {
//容器
private Deque<E> container = new ArrayDeque<E>();
private int cap;
public IStack(int cap) {
super();
this.cap = cap;
}
//压栈
public boolean push(E e){
if(container.size() + 1 > cap){
return false;
}
return container.offerLast(e);
}
//弹栈
public E pop(){
return container.pollLast();
}
//获取
public E peek(){
return container.peekLast();
}
public int size(){
return container.size();
}
public static void main(String[] args) {
IStack<String> backHistory = new IStack<String>(3);
backHistory.push("www.baidu.com");
backHistory.push("www.google.com");
backHistory.push("www.sina.com");
backHistory.push("www.3.com");
System.out.println("大小:" + backHistory.size());
String item = null;
System.out.println("先进后出");
while (null != (item = backHistory.pop())) {
System.out.println(item);
}
}
}
2、S02E130_01Enumeration接口_Vector_StringTokenizer
枚举Enumeration,作用和Iterator类似,都是输出数据
JDK1.5之前大量使用,之后被Iterator替代
方法:
——hasMoreElements()
——nextElement()
Vector(JDK1.4之前常用)跟ArrayList类似
package com.test.enumeration;
import java.util.Enumeration;
import java.util.Vector;
/**
* Enumeration的使用
* <br>1、判断hasMoreElements()
* <br>2、获取nextElement()
* <br>Vector的elements()方法
*/
public class UEnumeration {
public static void main(String[] args) {
Vector<String> vector = new Vector<String>();
vector.add("javase");
vector.add("html");
vector.add("oracle");
//遍历vector
Enumeration<String> enumeration = vector.elements();
while(enumeration.hasMoreElements()){
System.out.println(enumeration.nextElement());
}
}
}
package com.test.enumeration;
import java.util.StringTokenizer;
/**
* Enumeration的子类StringTokenizer:字符串分割,与String split()类似,但不支持正则表达式
*/
public class UStringTokenizer {
public static void main(String[] args) {
String emailStr = new String("test@163.com;test@qq.com;test@sohu.com");
StringTokenizer stringTokenizer = new StringTokenizer(emailStr,";");
//遍历获取
while(stringTokenizer.hasMoreElements()){
System.out.println(stringTokenizer.nextElement());
}
}
}