1. list:在Collection接口上增加大量方法,使得可以在List中間插入和移除元素。
a)ArrayList: 長于随即通路,在List中間插入、删除元素較慢。
b)LinkedList:通過較低的代價在List中間插入、删除元素,提供了優化的順序通路;在随即通路方面比較慢,實作了更 多的特性方法。
package context;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class TestCollection3 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
for(int i=0; i<5; i++) {
list.add("a" + i);
}
System.out.println(list);
Collections.shuffle(list); //随即排序
System.out.println(list);
List<String> list2 = list.subList(0, 3); //截取子序列
System.out.println(list2);
LinkedList<String> link = new LinkedList<String>(list);
Collections.sort(link);
System.out.println(link);
System.out.println(link.getFirst()); //清單為空NoSuchElementException
System.out.println(link.element());
System.out.println(link.peek()); //清單為空傳回null
//addLast add
//removeFirst remove pop
}
}
2. stack:後進先出
Stack
類表示後進先出(LIFO)的對象堆棧。它通過五個操作對類 Vector 進行了擴充 ,允許将向量視為堆棧。它提供了通常的 push 和 pop 操作,以及取堆棧頂點的 peek 方法、測試堆棧是否為空的 empty 方法、在堆棧中查找項并确定到堆棧頂距離的 search 方法。
首次建立堆棧時,它不包含項。
Deque
接口及其實作提供了 LIFO 堆棧操作的更完整和更一緻的 set,應該優先使用此 set,而非此類。例如:
Deque<Integer> stack = new ArrayDeque<Integer>();
package context;
import java.util.Stack;
public class TestCollection4 {
public static void main(String[] args) {
Stack<String> stack = new Stack<String>();
for(String s : "My dog has fleas".split(" ")) {
stack.push(s);
}
while(!stack.empty()) {
System.out.print(stack.pop() + " ");
}
System.out.println();
}
}
3.set:無序
a)HashSet:對快速查詢進行了優化,使用散列函數.
b)TreeSet:使用紅黑樹資料結構,可排序
c)LinkedHashSet:散列(快速查詢)+連結清單(維護元素的插入順序)
package context;
import java.util.Iterator;
import java.util.Random;
import java.util.TreeSet;
public class TestSet {
public static void main(String[] args) {
TreeSet<Integer> set = new TreeSet<Integer>();
Random rand = new Random(47);
for(int i=0; i<10000; i++) {
set.add(rand.nextInt(30));
}
System.out.println(set);
System.out.println(set.ceiling(12)); //大于等于指定值的最小元素
System.out.println("comparator = " + set.comparator());
Iterator<Integer> i = set.descendingIterator(); //反序疊代器
while(i.hasNext()) {
System.out.print(i.next() + " ");
}
System.out.println();
}
}