集合物件的特性
| 集合界面 | 具體實作類別 | 排序性 | 循序性 | 唯一性 | 鍵值對應 |
| Set | HashSet | 有 | |||
| SortedSet | TreeSet | 有 | 有 | ||
| List | ArrayList, LinkedList | 有 | |||
| Map | HashMap | 有 | |||
| SortedMap | TreeMap | 有 | 有 |
參考
1. How are the collections structured? Which one should I choose?
| 集合界面 | 具體實作類別 | 排序性 | 循序性 | 唯一性 | 鍵值對應 |
| Set | HashSet | 有 | |||
| SortedSet | TreeSet | 有 | 有 | ||
| List | ArrayList, LinkedList | 有 | |||
| Map | HashMap | 有 | |||
| SortedMap | TreeMap | 有 | 有 |
import java.util.HashSet;
import java.util.Set;
public class CollectionHasSet {
public static void main(String[] args) {
Set <String> hset = new HashSet< > ();
hset.add("西瓜");
String[] fruit = {"鳳梨","草莓","西瓜" };
for(String p : fruit)
hset.add(p);
System.out.println(hset);
}
}
執行結果
import java.util.HashSet;
import java.util.Set;
public class CollectionHasSet {
public static void main(String[] args) {
Set <String> hset = new HashSet< > ();
hset.add("葡萄");
String[] fruit = {"鳳梨","草莓","西瓜" };
for(String p : fruit)
hset.add(p);
System.out.println(hset);
}
}
執行結果
import java.util.TreeSet;
public class CollectionTreeSet {
public static void main(String[] args) {
TreeSet < Integer > tset = new TreeSet < >();
System.out.println("亂數取出 6 個號碼 (範圍 1 到 46)");
for (int i =1;i <= 6; i++){
while(true){
int num = (int) (Math.random() * 46) + 1;
if (tset.add(num)){
System.out.println("第 "+ i + " 個號碼" + num);
break;
}
}
}
System.out.println("物件"+ tset);
System.out.println("物件第一個元素為 "+ tset.first());
System.out.println("物件最後一個元素為 "+ tset.last());
System.out.println("物件介於20 ~ 30 的元素為 "+ tset.subSet(20, 30));
}
}
執行結果
import java.util.HashMap;
public class CollectionHashMap {
public static void main(String[] args) {
HashMap <String, String> hmap = new HashMap<&gr;();
hmap.put("1號","鳳梨");
hmap.put("2號","草莓");
hmap.put("3號","西瓜");
System.out.println("水果籃子有: "+ hmap);
if(hmap.containsKey("3號"))
System.out.println("重複購買水果:(\"3號\",\"草莓\")");
hmap.put("3號","草莓");
System.out.println("水果籃子有: "+ hmap);
System.out.println("增購水果:(\"4號\",\"西瓜\")");
hmap.put("4號","西瓜");
System.out.println("水果籃子有: "+ hmap);
System.out.println("取消購買水果:(\"4號\",\"西瓜\")");
hmap.remove("4號");
System.out.println("水果籃子有: "+ hmap);
}
}
執行結果
import java.util.TreeMap;
public class CollectionSortedMap {
public static void main(String[] args) {
TreeMap <String, String> tmap = new TreeMap<>();
tmap.put("5號","芒果");
tmap.put("4號","西瓜");
tmap.put("2號","草莓");
tmap.put("3號","西瓜");
tmap.put("1號","鳳梨");
System.out.println("水果籃子有: "+ tmap);
String key = tmap.get("3號");
System.out.println("籃子裡第3號水果是 "+key);
}
}
執行結果
import java.util.ArrayList;
import java.util.LinkedList;
public class CollectionLinkedList {
public static void main(String[] args) {
ArrayList <Integer> aryList = new ArrayList<>();
System.out.println("亂數取出 6 個號碼 (範圍 1 到 46)");
for (int i =1;i <= 6; i++){
while(true){
int num = (int) (Math.random() * 46) + 1;
if (aryList.add(num)){
System.out.println("第 "+ i + " 個號碼" + num);
break;
}
}
}
LinkedList <Integer> queue = new LinkedList <>(aryList);
System.out.println("取出佇列 (以先進先出):");
for(int j = queue.size() - 1; j >= 0; j--){
System.out.print(queue.getFirst() + " ");
queue.removeFirst();
}
System.out.println();
LinkedList <Integer> stack = new LinkedList <>(aryList);
System.out.println("取出堆疊 (以後進先出):");
while (true){
System.out.print(stack.removeLast() + " ");
if(stack.isEmpty())
break;
}
System.out.println();
}
}
執行結果
import java.util.ArrayList;
import java.util.Collections;
public class CollectionTest {
public static void main(String[] args) {
ArrayList <Integer> list = new ArrayList<> ();
list.add(50);
Integer[] fruit = {10,60,20,90 };
for(Integer p : fruit)
list.add(p);
System.out.println("Number : "+ list);
Collections.sort(list);
System.out.println("Number(順排) : "+ list);
Collections.reverse(list);
System.out.println("Number(反排) : "+ list);
}
}
執行結果
import java.util.ArrayList;
import java.util.Iterator;
public class CollectionIterator {
public static void main(String[] args) {
ArrayList <Integer> list = new ArrayList<> ();
list.add(50);
Integer[] fruit = {10,60,20,90 };
for(Integer p : fruit)
list.add(p);
System.out.println("Number : "+ list);
Iterator<Integer> itera = list.iterator();
while(itera.hasNext()){
int num = itera.next();
if (num >= 50)
itera.remove();
}
System.out.println("Number : "+ list);
}
}
執行結果
import java.util.ArrayList;
import java.util.ListIterator;
public class CollectionListIterator {
public static void main(String[] args) {
ArrayList <Integer> list = new ArrayList<> ();
list.add(50);
Integer[] fruit = {10,60,20,90 };
for(Integer p : fruit)
list.add(p);
System.out.println("Number : "+ list);
ListIterator<Integer> itera = list.listIterator();
while(itera.hasNext()){
itera.next();
if (itera.nextIndex() == 2)
itera.set(100);
}
System.out.println("Number : "+ list);
System.out.print("Number : [");
while(itera.hasPrevious())
System.out.print(itera.previous() + " ");
System.out.println(']');
}
}
執行結果