Collection-Iterator-foreach

来源:http://www.cnblogs.com/huguangqin/archive/2017/07/06/7128696.html
-Advertisement-
Play Games

一.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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 首先我們在Controllers裡面新添加一個控制器就叫LoginController,右鍵點擊Controllers添加控制器就可以了(註意後面一定是Controller結尾,這是一種約定) 其次:右鍵點擊index建立Index視圖。(不選擇使用母版頁) 現在我們就可以在Index視圖中設計我們 ...
  • 4.1 示例代碼設置 首先下載此處的php接入代碼 ,在公眾號中 配置 url 地址指向 文件 代碼 只需更換 自定義的token 即可 這樣就完成最初的接入 微信公眾平臺提供了一個php示例代碼: http://mp.weixin.qq.com/mpres/htmledition/res/wx_s ...
  • 控制項說明:一個簡單的訊息提示功能,使用 FMX 基本控制項,因此支持 Win, macOS, iOS, Android 平臺。 已知問題:如果使用了 WebBrowser, MapView... 等原生控制項,則無法顯示這個 Toast 訊息,因為 FMX 控制項無法顯示在原生控制項的上方。 原碼下載:[控 ...
  • ThreadLocal翻譯成中文比較準確的叫法應該是:線程局部變數。 這個玩意有什麼用處,或者說為什麼要有這麼一個東東?先解釋一下,在併發編程的時候,成員變數如果不做任何處理其實是線程不安全的,各個線程都在操作同一個變數,顯然是不行的,並且我們也知道volatile這個關鍵字也是不能保證線程安全的。 ...
  • pymysql模塊對mysql進行 1 import pymysql 2 3 4 5 # 創建連接 6 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='test') 7 # 創建游 ...
  • 假如你準備在模擬器裡面運行這個,你可以在“(lldb)”提示的後面輸入下麵的: (lldb) po $eax LLDB在xcode4.3或者之後的版本裡面是預設的調試器。假如你正在使用老一點版本的xcode的話,你又GDB調試器。他們有一些基本的相同的命令,因此假如你的xcode使用的是“(gdb) ...
  • 登錄模塊: 我們無論上那個網站,經常遇到這樣的情況,讓我們登錄這個網站,流程圖如下: 思路: 1.當我們登錄網站的時候,我們首先會輸入用戶名,這個時候,有些網站會提醒我們用戶名是否存在,如果我們輸入的用戶名不存在的話,會出現提示,告訴我們用戶名不存在,這個時候,我們就需要重新輸入,或者選擇註冊,當然 ...
  • 介面基礎知識: 簡單說下介面測試,現在常用的2種介面就是http api和rpc協議的介面,今天主要說:http api介面是走http協議通過路徑來區分調用的方法,請求報文格式都是key-value形式,返回報文一般是json串; 介面協議:http、webservice、rpc等。 請求方式:g ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...