java集合類
Collection類集合可以理解為一個動態數組,集合中的對象可以任意擴充. 集合的特點:效能高;容易擴充。 Collection的常用子類有:List、Set、Map一、List介面
list介面可以存放任意類型的資料,而且在List介面中內容可以重複。
List介面常用子類有:ArrayList、Vector。
1.1ArrayList
下面的Demo中展示了怎樣建立ArrayList對象、添加元素、訪問元素、移除元素。
package ucas.collection.demo;import java.util.ArrayList;import java.util.List;public class ListDemo { public static void main(String[] args) { List lists = null; lists = new ArrayList();// list可重複 // 添加 lists.add("A"); lists.add("B"); lists.add("A"); for (int i = 0; i < lists.size(); i++) { System.out.println(lists.get(i)); } System.out.println("判斷集合lists是否為空白:"+lists.isEmpty()); //返回第一次出現的位置 System.out.println("A是否存在:"+lists.indexOf("A")); // 移除 lists.remove(0); System.out.println("移除第一項以後:"); for (int i = 0; i < lists.size(); i++) { System.out.println(lists.get(i)); } }}
1.2Vector
Vector和ArrayList在使用上一樣,區別主要在於內部實現上的效能與是否是安全執行緒上:
| 比較項 |
ArrayList |
Vector |
| 推出時間 |
jdk1.2 |
jdk1.0 |
| 處理方式 |
採用非同步處理方式,效能高 |
採用同步處理方式,效能低 |
| 是否是安全執行緒 |
非安全執行緒 |
安全執行緒 |
VectorDemo
package ucas.collection.demo;import java.util.List;import java.util.Vector;public class VectorDemo { public static void main(String[] args) { // ArrayList jdk1.2之後推出,採用非同步處理方式,效能高,屬於非安全執行緒; //Vector jdk1.0之後推出, 採用同步處理方式,效能低,屬於安全執行緒。 //方法使用都一樣 List lists = null; lists = new Vector(); lists.add("A"); lists.add("B"); for (int i = 0; i < lists.size(); i++) { System.out.println(lists.get(i)); } }}
二、Set介面
Set介面中不可以加入重複元素,但是可以排序 。Set常用子類 有2個,散列存放使用HashSet ,有序存放使用TreeSet。
package ucas.collection.demo;import java.util.HashSet;import java.util.Iterator;import java.util.Set;import java.util.TreeSet;public class SetDemo { public static void main(String[] args) { /* * Set介面中不可以加入重複元素,但是可以排序 Set常用子類 散列存放:HashSet * 有序存放:TreeSet */ Set s = null; s = new TreeSet(); s.add("B"); s.add("A"); s.add("C"); s.add("D"); s.add("E"); s.add("F"); s.add("G"); System.out.println(s); }}
輸出:
[A, B, C, D, E, F, G]
HashSet:
package ucas.collection.demo;import java.util.HashSet;import java.util.Set;public class HashSetDemo { public static void main(String[] args) { Set hs=new HashSet(); hs.add("two"); hs.add("one"); hs.add("three"); hs.add("four"); hs.add("five"); hs.add("six"); System.out.println(hs); }}
輸出
[six, four, one, two, three, five]
三、Map介面
Map介面採用key->value的方式儲存
常用子類:
HashMap:無序存放,key值不允許重複
HashTable:無序存放,key值不允許重複
package ucas.collection.demo;import java.util.Collection;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;public class MapDemo01 { public static void main(String[] args) { Map map = new HashMap(); map.put("key1", "java進階1"); map.put("key2", "java進階2"); map.put("key3", "java進階3"); map.put("key4", "java進階4"); map.put("key5", "java進階5"); map.put("key6", "java進階6"); System.out.println(map.get("key1")); // 判斷key值是否存在 if (map.containsKey("key12")) { System.out.println("key存在"); } else { System.out.println("key不存在"); } // 判斷value是否存在 if (map.containsValue("java進階5")) { System.out.println("value值存在"); } else { System.out.println("value值不存在"); } // Iterator迴圈輸出 System.out.println(map.keySet()); Set s = map.keySet(); Iterator iter = s.iterator(); while (iter.hasNext()) { System.out.println(iter.next()); } // 擷取全部值 Collection c = map.values(); Iterator iter2 = c.iterator(); while (iter2.hasNext()) { System.out.println(iter2.next()); } }}
Iterator
Iterator用於迭代輸出集合中的元素,迭代輸出就是將元素一個一個進行判斷,判斷有內容則把內容取出。
package ucas.collection.demo;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class IteratorDemo { public static void main(String[] args) { List lists = new ArrayList(); lists.add("Q"); lists.add("W"); lists.add("E"); lists.add("A"); lists.add("B"); Iterator iter = lists.iterator(); while (iter.hasNext()) { // lists.remove(1);Iterator迭代輸出集合的過程中不能刪除元素,否則會出現錯誤 System.out.println(iter.next()); } }}