Collection-Iterator-foreach,iteratorforeach

來源:互聯網
上載者:User

Collection-Iterator-foreach,iteratorforeach

一.Collection(java.util)
1.概述:具有相同性質的一類事物的匯聚的整體,稱為集合.任何集合都包含三塊內容:對外的介面/介面的實現/對集合運算的演算法.
         java中使用Collection來表示單列集合頂層的介面.
         public interface Collection<E> extends Itretaor<E>{}
         注意:介面不能直接執行個體化,得需要其子類
2.特點及體系:Collection為頂層介面,僅描述集合的共性內容.常用的子介面為 List 和 Set.
     共性內容:
         (1)集合容器的的長度可以改變;
         (2)儲存的是同一個類型的資料;
         (3)只能存引用資料類型(基礎資料型別 (Elementary Data Type)需進行裝箱操作);
     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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.