Collection-Iterator-foreach

一.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(){}:將一個集合變爲對象數組;java

代碼:算法

  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併發

本站公眾號
   歡迎關注本站公眾號,獲取更多信息