第 28 节 集合工具类
Stack
Stack表示的是栈操作,栈是一种先进后出的数据结构。而Stack是Vector的子类。
public class Stack<E>
extends Vector<E>虽然Stack是Vector子类,可是它不会使用Vector类的方法,它使用自己的方法:
入栈:
public E push(E item);出栈:
public E pop();
范例: 观察栈的操作
public class TestDemo {
public static void main(String[] args) throws Exception {
Stack<String> all = new Stack<String>();
all.push("A");
all.push("B");
all.push("C");
System.out.println(all.pop());
System.out.println(all.pop());
System.out.println(all.pop());
System.out.println(all.pop()); // EmptyStackException
}
}在进行栈操作的过程之中,如果栈已经没没有数据了,那么无法继续出栈。
Queue
Quene描述的是一个队列,队列的特点就是先进先出,常见的使用场景有生产队列、消息队列等。如果将队列应用在多线程的“生产者与消费者”模型上,那么对于生产者生产过快的情况就不会再等待消费者取出数据。队列的实现常用的是LinkedList。
队列的使用主要依靠Queue接口之中提供的两个方法:
追加:
public boolean offer(E e),可以直接使用add()方法;获取:
public E poll()。
范例: 实现队列操作
Properties
Properties是Hashtable的子类,主要是进行属性的操作(属性的最大特点是利用字符串设置key和value)。观察Properties类的定义结构:
在使用Properties类的时候不需要设置泛型类型,因为从它一开始出现就只能够保存String。在Properties类里面主要使用如下的操作方法:
设置属性:
public Object setProperty(String key, String value);取得属性:
public String getProperty(String key),如果key不存在返回null;取得属性:
public String getProperty(String key, String defaultValue),如果key不存在返回defaultValue;
范例: 属性的基本操作
在Properties类里面提供有数据的输出操作:public void store(OutputStream out, String comments) throws IOException。
范例: 将属性信息保存在文件里
也可以从指定的输入流中读取属性信息:public void load(InputStream inStream) throws IOException;
范例: 通过文件流读取属性内容
对于属性文件(资源文件)而言,除了可以使用Properties类读取之外,也可以使用ResourceBundle类读取。
Collections工具类
在Java提供类库的时候考虑到用户的使用方便性,所以专门提供了一个集合的工具类 —— Collections,这个工具类可以实现List、Set、Map集合的操作。
为集合追加数据:
public static <T> boolean addAll(Collection<? super T> c, T... elements);翻转集合:
public static void reverse(List<?> list);
**面试题:**请解释Collection与Collections的区别?
Collection是集合操作的接口;Collections是集合操作的工具类,可以进行List、Set、Map集合的操作。
最后更新于
这有帮助吗?