1: package Test_Collection;
2:
3: import java.util.*;
4:
5: public class Test_Collection
6: {
7:
8: /**
9: * @param args
10: */
11: public static void main(String[] args) {
12: // TODO Auto-generated method stub
13:
14: /**HashSet使用,元素不可重複,無順序性*/
15: HashSet hs1 = new HashSet();
16: hs1.add(1);
17: hs1.add(2);
18: hs1.add(0);
19: hs1.add(4);
20: hs1.add(3);
21: hs1.add(0);//沒有放入hashset,因為元素不得重複,不會造成錯誤
22: System.out.println(hs1.size());//3
23: System.out.println(hs1.contains(0));//true
24: System.out.println(hs1.remove(0));//true
25: System.out.println(hs1.contains(0));//false
26:
27: Iterator ior = hs1.iterator();//使用迭代器取得hashset元素內容
28: while(ior.hasNext())//使用while迴圈
29: {
30: Integer i = (Integer)ior.next();
31: System.out.println(i);//1 2
32: }
33: for(Iterator ior2 = hs1.iterator(); ior2.hasNext();)//使用 for 迴圈
34: {
35: Integer ger = (Integer)ior2.next();//記得轉型
36: System.out.println(ger);//1 2
37: }
38:
39: /**LinkHashSet使用,元素不可重複,有順序性*/
40: LinkedHashSet lhs = new LinkedHashSet();
41: lhs.add(5.1);
42: lhs.add(3.1);
43: lhs.add(4.1);
44: lhs.add(2.1);
45: lhs.add(0.1);
46: lhs.add(1.1);
47: lhs.add(1.1);//沒有放入linkedhashset,因為元素不得重複,不會造成錯誤
48: System.out.println(lhs.size());
49: System.out.println(lhs.isEmpty());
50: for(Iterator ior3 = lhs.iterator(); ior3.hasNext();)
51: {
52: Double temp1 = (Double)ior3.next();
53: System.out.println(temp1);// 5.1 3.1 4.1 2.1 0.1 1.1
54: }
55:
56: /**TreeSet使用,元素不可重複,會自動作排列(自然排序法)*/
57: TreeSet ts = new TreeSet();
58: ts.add(5);
59: ts.add(3);
60: ts.add(4);
61: ts.add(0);
62: ts.add(1);
63: ts.add(1);//沒有放入TreeSet,因為元素不得重複,不會造成錯誤
64: System.out.println(ts.size());
65: for(Iterator ior4 = ts.iterator();ior4.hasNext();)
66: {
67: Integer i = (Integer)ior4.next();
68: System.out.println(i);//0 1 3 4 5 自動作排列,字串會依字母順序排列
69: }
70:
71: /**AarrayList使用,元素可重複,可藉由索引來操作元素*/
72: ArrayList al = new ArrayList();
73: al.add("0");//加入元素
74: al.add("1");
75: al.add("2");
76: for(Object o : al)//使用 for-each顯示元素內容
77: {
78: System.out.println(o);//0 1 2
79: }
80: al.add(1, "3");//指定加入位置,之後的元素會自動往後移位
81: for(Object o : al)
82: {
83: System.out.println(o);//0 3 1 2
84: }
85: for(int i=0; i<al.size(); i++)
86: {
87: if(al.get(i).equals("3"))//指定條件搜尋
88: {
89: al.remove(i);//移除
90: }
91: }
92:
93: /**Vector使用 ,功能類似於ArrayList,vector有 Thread-safe*/
94: Vector v1 = new Vector();
95: for(int i=0; i<5; i++)
96: {
97: v1.add(new TempClass(i));//加入自訂類別
98: }
99:
100: System.out.println(v1.size());
101:
102: for(int i=0; i<v1.size(); i++)
103: {
104: TempClass temptc = (TempClass)v1.get(i);
105: if(temptc.getNum()==3)
106: {
107: v1.remove(i);//移除
108: }
109: }
110:
111: /**stack使用為後進先出,為vector的子類別*/
112: Stack sk = new Stack();
113: sk.push("abc");
114: sk.push("def");
115: sk.push("ghi");
116: for(int i=0;i<sk.size(); i++)
117: {
118: if(sk.get(i).equals("abc"))
119: {
120: sk.pop();//由於後進先出, pop指令 會把 ghi 移出集合
121:
122: }
123: }
124: for(int i=0; i<sk.size(); i++)
125: {
126: System.out.println(sk.get(i));//abc def
127: }
128:
129: for(int i=0;i<sk.size(); i++)
130: {
131: if(sk.get(i).equals("def"))
132: {
133: sk.remove(i);//或者也可以使用 remove
134: }
135: }
136: for(int i=0; i<sk.size(); i++)
137: {
138: System.out.println(sk.get(i));//abc
139: }
140:
141: /**LinkedList使用,實作Queue*/
142: LinkedList ll = new LinkedList();
143: ll.add(9);
144: ll.add(7);
145: ll.add(4);
146: ll.add(5);
147: ll.add(8);
148: ll.poll();//移除索引最小的元素 9
149: ll.pollLast();//移除索引最大的元素 8
150: ll.addFirst(0);//從最小索引之前加入
151: ll.addLast(6);//從最大索引之後加入
152: for(int i=0; i<ll.size(); i++)
153: {
154: System.out.println(ll.get(i));//0 7 4 5 6
155: }
156:
157: /**HashMap使用,無順序性,無排序性*/
158: HashMap hm = new HashMap();
159: hm.put(0, 9);//使用 put(key,value) 放入元素
160: hm.put(0, 0);//由於put同一個key值,0會取代9
161: hm.put(1, 1);
162: hm.put(4, 4);
163: hm.put(2, 2);
164: hm.put(3, 3);
165: hm.put(5, 5);
166: System.out.println(hm.size());//6
167: System.out.println(hm.get(0));//0
168: System.out.println(hm.containsKey(100));//false 是否包含指定 key 值
169: System.out.println(hm.containsValue(4));//true 是否包含指定 value 值
170: if(hm.containsKey(4))
171: {
172: hm.remove(4);
173: }
174: System.out.println(hm.size());//5
175:
176:
177: /**Hashtable使用,類似於HashSet,Hashtable有Thread-Safe*/
178: Hashtable ht = new Hashtable();
179: ht.put(0,0);
180: ht.put(1,1);
181: ht.put(2,2);
182: if(!ht.isEmpty())
183: {
184: ht.clear();
185: }
186:
187: /**LinkedHashMap使用,有順序性*/
188: LinkedHashMap lhm = new LinkedHashMap();
189: lhm.put("k1","v1");
190: lhm.put("k2","v2");
191: lhm.put("k3","v3");
192: System.out.println(lhm.containsKey(123));//false
193: System.out.println(lhm.containsValue("v3"));//true
194:
195: /**TreeMap使用,具有自動排序,限制元素類型相同*/
196: TreeMap tm = new TreeMap();
197: tm.put(0, "ghi");
198: tm.put(1, "def");
199: tm.put(2, "abc");
200: tm.put(3, "jkl");
201: System.out.println(tm.size());//4
202: System.out.println(tm.lastKey());//回傳最高鍵值
203: System.out.println(tm.firstKey());//回傳最低鍵值
204: System.out.println(tm.get(tm.lastKey()));//jkl
205: System.out.println(tm.get(tm.firstKey()));//ghi
206:
207: /**泛型和集合一起使用可限制元素的型別*/
208: Vector<String> v2 = new Vector<String>();//限制能放進 string
209: // v2.add(3);錯誤不可放入非string
210: v2.add("rew");
211:
212:
213: }
214:
215: }
216:
217: class TempClass
218: {
219: private int tempNum;
220:
221: TempClass()
222: {
223: tempNum = 99;
224: }
225:
226: TempClass(int temp)
227: {
228: tempNum = temp;
229: }
230:
231: public int getNum()
232: {
233: return tempNum;
234: }
235:
236: }