4.1.1 Collection<E>
java.util.Collection<E>
看API
Collection中的元素個數不固定,可以任意擴充。
Collection的常用子類
- List
- Set
- Queue
4.1.2 List<E>
java.util.List<E>
是Collection的子接口
List接口可以存放任意類型的數據,而且value可以重複。
List接口常用的子類:ArrayList,Vector
常用操作:
- 判斷集合是否爲空:boolean isEmpty()
- 查找指定對象是否存在:int indexOf(Object o),不存在返回-1
- List<String> lst = new ArrayList<String>();
- 元素個數:lst.size();
- 刪除操作:lst.remove(index); //刪除之後index有變化
- List<String> lst1 = new Vector<String>();
- 不需要線程安全的時候,用ArrayList
ArrayList VS Vector ArrayList Vector 推出時間 jdk1.2 jdk1.2 性能 採用異步處理方式,性能高 採用同步處理方式,性能低 thread safe 非線程安全 線程安全
4.1.3 Set<E>
Set接口中不能放入重複元素,但是可以排序。
Set接口的常用子類
- 散列存放:HashSet,排放無序
- Set<String> s = new HashSet<String>();
- s.add("A");
- s.add("B");
- s.add("C");
- s.add("D");
- s.add("E");
- s.add("F");
- System.out.println(s.contains("E"));
- System.out.println(s);
- 有序存放:TreeSet
- Set<String> s = new TreeSet<String>();
- s.add("A");
- s.add("B");
- s.add("C");
- s.add("D");
- s.add("E");
- s.add("F");
4.1.4 Iterator<E>
集合輸出的標準做法是使用Iterator接口。
操作原理:
Iterator是專門的迭代輸出接口,迭代輸出就是將元素一個一個進行判斷,判斷其是否有內容,如果有則把內容取出
方法:
- bool hasNext(); 如果還有元素可以迭代,返回true
- E next(); 返回迭代的下一個元素
- void remove(); 從迭代器指向的Collection中移除迭代器返回的最後一個元素。
- List<String> lists = new ArrayList<String>();
- lists.add("A");
- lists.add("B");
- lists.add("C");
- lists.add("D");
- lists.add("E");
- Iterator<String> iter = lists.iterator();
- while (iter.hasNext()){
- String str = iter.next();
- if("A".equals(str)){
- iter.remove();
- } else{
- System.out.print(str + " ");
- }
- }
結果打印:B C D E 4
“A”被從lists中刪除了
- 迭代輸出的時候,不能用collection去刪除元素,比如說lists.remove(3); ==> 錯誤
4.1.5 Map<T1,T2>
保存形式
key->value, key不允許重複
常用子類:
HashMap:無序排放,value不可重複
- Map<String,String> map = new HashMap<String, String>();
- map.put("k1","v1");
- map.<span style="background-color: rgb(255, 255, 153);">put</span>("k2","v2");
- map.put("k3","v3");
- String str = map.<span style="background-color: rgb(255, 255, 153);">get</span>("k3");
- if(map.<span style="background-color: rgb(255, 255, 153);">containsKey</span>("k1")){
- System.out.println("contains key");
- }
- if(map.<span style="background-color: rgb(255, 255, 153);">containsValue</span>("v3")){
- System.out.println("contains value");
- }
- Set<String> keySet = map.<span style="background-color: rgb(255, 255, 153);">keySet</span>();
- Iterator<String> iter = keySet.iterator();
- while (iter.hasNext()){
- System.out.println(iter.next());
- }
- Collection<String> lstValues = map.<span style="background-color: rgb(255, 255, 153);">values</span>();
- iter = lstValues.iterator();
- while (iter.hasNext()){
- System.out.println(iter.next());
- }
Hashtable:無序排放,value可以重複