一.Collection(java.util)1.概述:具有相同性質的一類事物的匯聚的整體,稱為集合.任何集合都包含三塊內容:對外的介面/介面的實現/對集合運算的演算法. java中使用Collection來表示單列集合頂層的介面. public interface Collection extend... ...
一.Collection(java.util)
1.概述:具有相同性質的一類事物的匯聚的整體,稱為集合.任何集合都包含三塊內容:對外的介面/介面的實現/對集合運算的演算法.
java中使用Collection來表示單列集合頂層的介面.
public interface Collection<E> extends Itretaor<E>{}
註意:介面不能直接實例化,得需要其子類
2.特點及體系:Collection為頂層介面,僅描述集合的共性內容.常用的子介面為 List 和 Set.
共性內容:
(1)集合容器的的長度可以改變;
(2)存儲的是同一個類型的數據;
(3)只能存引用數據類型(基本數據類型需進行裝箱操作);
List : 有序/允許重覆;
Set : 無序/不允許重覆;
Queue:隊列介面;
SortedSet:對集合中的數據進行排序;
3.常用方法:
public boolean add(E e){}:向集合中插入對象;
public boolean addAll(Collection<? extends E> c){}:插入一個集合的內容;
public void clear(){}:清除此集合中的所有內容,但是保留該集合容器;
public boolean contains(Object o){}:判定某一對象是否存在該集合中;
public boolean containsAll(Collection<?> c){}:判斷一組對象是否存在該集合中;
public boolean equals(Object o){}:對象比較;
public int hashCode(){}:哈希值;
public boolean isEmpty(){}:判斷集合是否為空;
public Iterator<E> iterator(){}:為Iterator介面實例化;返回迭代器實例化對象;
public boolean remove(Object o){}:刪除指定對象;
public boolean removeAll(Collection<?> c){}:刪除一組對象;
public boolean retainAll(Collection<?> c){}:保存指定內容;
public int size(){}:求出集合大小;
public Object[] toArray(){}:將一個集合變為對象數組;
代碼:
1 import java.util.Collection; 2 import java.util.ArrayList; 3 4 public class Coll{ 5 public static void main(String[] args){ 6 //通過子類實例化介面對象,因為介面全為抽象無法直接實例化 7 Collection<String> c = new ArrayList<String>(); 8 //添加元素add() 9 c.add("Rose"); 10 c.add("Jack"); 11 //查看集合內容 12 System.out.println(c);//[Rose, Jack] 13 //查看集合長度 14 System.out.println(c.size());//2 15 //查看是否包含tom 16 System.out.println(c.contains("tom"));//false 17 //查看是否包含Tom 18 c.add("Tom"); 19 System.out.println(c.contains(new String("Tom")));//true--new String("Tom")返回一個"Tom"字元串 20 //刪除指定對象remove() 21 c.remove("Rose"); 22 System.out.println(c);//[Jack, Tom] 23 //刪除所有對象-保留集合 24 c.clear(); 25 System.out.println(c);//[] 26 //判斷是否為空 27 System.out.println(c.isEmpty());//true 28 } 29 }
二.Iterator(java.util)
1.定義:專門操作集合的工具類,只要碰到集合的輸出操作就一定使用Iterator介面
pbulic interface Iterator<E>
2.常用方法:
public boolean hasNext(){}:判斷是否存在下一個值;
public E next(){}:取出當前元素;
public void remove(){}:移除當前元素;
3.註意事項:
(1)使用迭代器只能刪除數據,不能添加數據;
(2)迭代器迭代數據的過程中,不能使用集合自帶的方法,改變集合的長度!否則會報異常:ConcurrentModificationException 併發修改異常!
(3)註意在構建迭代器的時候,其後<>內指定類型(如:Iterator<String> it = Collection.iterator();),否則運算會出錯,僅列印沒問題;
1 代碼1://需求:利用Iterator輸出集合內容 2 import java.util.Collection; 3 import java.util.ArrayList; 4 import java.util.Iterator; 5 6 public class IteratorDemo{ 7 public static void main(String[] args){ 8 //通過子類實例化對象實例化Collection對象 9 Collection<String> c = new ArrayList<String>(); 10 //向集合c中添加元素 11 c.add("Green"); 12 c.add("Smith"); 13 c.add("Philip"); 14 //通過Collection的iterator方法,創建iterator對象 15 Iterator<String> it =c.iterator(); //註意在構建迭代器的時候,指定類型(此處為<String>),否則運算會出錯,僅列印沒問題 16 //輸出集合c中的所有元素 17 while(it.hasNext()){ 18 System.out.print(it.next()+"\t");//註意,建議判斷一次僅調用一次next()方法,由於next()在輸出的時候也會使指針向前移動,容易發生"NoSuchElementException" 19 //System.out.println("i like"+it.next());//java.util.NoSuchElementException 20 } 21 } 22 }
1 代碼2://需求:刪除元素 2 import java.util.Collection; 3 import java.util.ArrayList; 4 import java.util.Iterator; 5 6 public class IteratorDemo{ 7 public static void main(String[] args){ 8 //通過子類實例化對象實例化Collection對象 9 Collection<String> c = new ArrayList<String>(); 10 //向集合c中添加元素 11 c.add("Green"); 12 c.add("Smith8"); 13 c.add("Philip"); 14 //foreach迭代 15 for(String s : c){ 16 System.out.print(s+"\t") //Green Smith8 Philip 17 } 18 System.out.println("====================") 19 //通過Collection的iterator方法,創建iterator對象 20 Iterator<String> it =c.iterator();//註意在構建迭代器的時候,指定類型(此處為<String>),否則運算會出錯,僅列印沒問題 21 //輸出集合c中的所有元素 22 while(it.hasNext()){ 23 //取出集合中的元素 24 String str = it.next(); 25 //判斷是否含有數字--正則(字元串最後一位是數字的) 26 if(str.matches("\\w+\\d")){ 27 it.remove(); 28 }else{ 29 System.out.print(str+"\t");// Green Philip 30 } 31 } 32 System.out.print("刪除帶數字的名稱後為:"+c+"\t");//刪除帶數字的名稱後為:[Green, Philip] 33 } 34 } 35
三.for--each
1.作用:增強for是JDK1.5之後出現的新特性,可以用於迭代(遍歷/迴圈)集合或數組!可以使用增強for替代迭代器,獲取集合的元素內容!
2.格式:
for(數據類型 變數名 : 對象名或數組名){
集合或數組中的每一個元素!
}
3.代碼:見二.Iterator代碼2