集合 - Collection
from: Collections in Java
from: Complete Java Collection tutorial for the beginner
Set
a collection that cannot contain duplicate elements
HashSet - 不保證順序
LinkedHaseSet - 可保證插入順序
TreeSet - 會將物件做排序,預設用自然順序
Example
package com.test.collection;
import java.util.Set;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.TreeSet;
public class SetTest {
public static void main(String [] args) {
Set<String> hs = new HashSet<String>();
Set<String> lhs = new LinkedHashSet<String>();
Set<String> ts = new TreeSet<String>();
setTest(hs);
setTest(lhs);
setTest(ts);
}
private static void setTest(Set<String> set) {
set.add("dog");
set.add("dog");
set.add("cat");
set.add("fish");
set.add("bird");
System.out.println(set.getClass().getSimpleName() + ":");
System.out.println(set);
System.out.println("--");
}
}
HashSet:
[cat, fish, bird, dog]
--
LinkedHashSet:
[dog, cat, fish, bird]
--
TreeSet:
[bird, cat, dog, fish]
--
List
ordered collection
ArrayList - 随機存取快,插入/刪除速度慢
LinkedList - 随機存取慢,插入/刪除速度快,也可當做Queue/Stack
Example
ArrayList
package com.test.collection;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
public class ListTest {
public static void main(String [] args) {
List<String> list = new ArrayList<String>();
// add
list.add("dog");
list.add("cat");
list.add("fish");
list.add("bird");
traversal(list);
// modify
list.set(0, "apple");
list.remove(1);
forEach(list);
}
private static void traversal(List<String> list) {
Iterator<String> iterator = list.iterator();
System.out.print("List[" + list.size() + "]: ");
while (iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
System.out.println();
}
// java 8
private static void forEach(List<String> list) {
System.out.print("List[" + list.size() + "]: ");
list.forEach(item->System.out.print(item + " "));
System.out.println();
}
}
List[4]: dog cat fish bird
List[3]: apple fish bird
Array
package com.test.collection;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class ArrayTest {
public static void main(String [] args) {
String[] arr = new String[]{"dog", "cat", "fish", "bird"};
traversal(arr);
// Array to ArrayList
traversal(Arrays.asList(arr));
}
private static void traversal(String[] arr) {
System.out.print("Array[" + arr.length + "]: ");
for(String s : arr)
System.out.print(s + " ");
System.out.println();
}
private static void traversal(List<String> list) {
Iterator<String> iterator = list.iterator();
System.out.print("List[" + list.size() + "]: ");
while (iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
System.out.println();
}
}
Array[4]: dog cat fish bird
List[4]: dog cat fish bird
Queue
a collection used to hold multiple elements prior to processing
Main Operation
Type of operation | Throws exception | Returns special value |
---|---|---|
Insert | add(e) | offer(e) |
Remove | remove() | poll() |
Examine | element() | peek() |
from: Java Queue Collection Tutorial and Examples
Example
package com.test.collection;
import java.util.Queue;
import java.util.PriorityQueue;
public class QueueTest {
public static void main(String [] args) {
Queue<String> queue = new PriorityQueue<String>();
queue.offer("dog");
queue.offer("cat");
queue.offer("fish");
queue.offer("bird");
System.out.println(queue);
System.out.println("head: " + queue.peek());
System.out.println("poll: " + queue.poll());
System.out.println("head: " + queue.peek());
}
}
[bird, cat, fish, dog]
head: bird
poll: bird
head: cat
Deque
Double Ended Queue - 可從前端或尾端操作資料
Type of operation | First element | Last element |
---|---|---|
Insert | addFirst(e) offerFirst(e) |
addLast(e) offerLast(e) |
Remove | removeFirst() pollFirst() |
removeLast() pollLast() |
Examine | getFirst() peekFirst() |
getLast() peekLast() |