標籤:images move 重複 ref 添加 with 變數 app rem
一、集合
1、集合類也稱容器類,主要負責儲存、盛裝其他資料。
2、集合可以儲存數量不確定的資料,儲存具有映射關係的資料(也稱關聯陣列)。
3、Java5後提供一些多安全執行緒的集合類,放在java.util.concurrrent。(utility的縮寫,意為多用途的,實用的)
4、集合只能儲存對象(實際是對象的引用,習慣稱對象)。
5、Java的集合主要由Collection和Map兩個介面派生而出,Map介面的實作類別用於儲存關聯陣列,Set集合元素不可重複,通過元素本身訪問,Map集合可以通過key值訪問,List集合可以通過下標訪問。
二、Collection介面
1、Collection介面是Set、Queue、List介面的父介面,所以它的方法也可以操控著三個集合。
a、boolean add(Object o):向指定集合裡添加一個元素,指定集合對象因為這個方法改變,返回true。
b、boolean addAll(Collection c):把集合c裡的所有元素添加到指定集合裡,指定集合對象因為這個方法改變,返回true。
c、void clean():清除指定集合的所有元素,將集合長度變為0。
d、boolean contains(Object o):返回集合裡是否包含指定元素。
e、boolean containsAll(Collection c):返回集合是否包含集合c裡的所有元素。
f、boolean isEmpty();返回集合是否為空白,長度為0返回true,否則false。
g、boolean remove(Object o):刪除集合中的指定元素o,當集合中包含一個或多個元素o時,刪除第一個合格元素,返回true。
h。boolean removeAll(Collection c):從集合裡刪除集合c包含的所有元素,刪除一個或一個以上的元素,返回true。
i、boolean retainAll(Collection c):從集合裡刪除集合c以外的元素,指定集合對象因為這個方法改變,返回true。
j、in size():返回集合裡的元素個數、
k、Object[] toArray():把集合轉換為一個數組,集合元素變為對應數組元素。
2、使用Foreach迴圈遍曆集合元素
代碼如下:
1 import java.util.HashSet; 2 import java.util.Objects; 3 4 public class MyClass { 5 public static void main(String[] args) { 6 //HashSet()類應該是實現了Collection介面的一個類,否則不可能執行個體化 7 Collection names = new HashSet(); 8 //添加的應該是引用,這裡直接放字串,是在常量池裡? 9 names.add("xiaoming");10 names.add("xiaogang");11 names.add("xiaoli");12 for(Object theName_obj:names){13 String theName = (String) theName_obj;14 System.out.println(theName);15 //下面這句話會拋出ConcurrentModificationException,因為theName是一個迭代變數,不是元素本身16 if(theName.equals("xiaoli")){17 names.remove(theName);18 }19 }20 }21 }
運行結果:
1 xiaoming 2 xiaoli 3 Exception in thread "main" java.util.ConcurrentModificationException 4 at java.util.HashMap$HashIterator.nextNode(HashMap.java:1437) 5 at java.util.HashMap$KeyIterator.next(HashMap.java:1461) 6 at com.example.MyClass.main(MyClass.java:15) 7 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 8 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 9 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)10 at java.lang.reflect.Method.invoke(Method.java:498)11 at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)12 13 Process finished with exit code 1
【Java】集合_學習筆記