1. 程式人生 > >迭代Iterator結合ArrayList集合的使用及基本使用,再看迭代Iterator原理

迭代Iterator結合ArrayList集合的使用及基本使用,再看迭代Iterator原理

迭代Iterator

介面 Iterator<E>
集合是用來儲存元素,儲存的元素需要檢視,那麼就需要迭代(遍歷) 
public interface Iterator<E>
 對 collection 進行迭代的迭代器。

boolean hasNext()
如果仍有元素可以迭代,則返回 true。
(換句話說,如果 next 返回了元素而不是丟擲異常,則返回 true)。 
返回:
如果迭代器具有多個元素,則返回 true。
next()返回迭代的下一個元素。 
返回:
迭代的下一個元素。 
void remove()
從迭代器指向的 collection 中移除迭代器返回的最後一個元素(可選操作)。
每次呼叫 next 只能呼叫一次此方法。 如果進行迭代時用呼叫此方法之外的其他方式修改了該迭代器所指向的 collection,則迭代器的行為是不確定的。 
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import bean.Student;
public class f {
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Collection c = new ArrayList();
		c.add("a");
		c.add("b");
		c.add("c");
		c.add("d");
		
		//對集合中的元素迭代(遍歷)
		Iterator it = c.iterator();//獲取迭代器
		
		/*boolean b1 = it.hasNext();//判斷集合中是否有元素,有就返回true
		System.out.println(b1);//true
		Object obj1 = it.next();//a
		System.out.println(obj1);
		Object obj2 = it.next();//b,next()方法會將指標往後一位
		System.out.println(obj2);*/
		
		while(it.hasNext()) {
			System.out.println(it.next());
		}
		
		
		Collection c2 = new ArrayList();
		c2.add(new Student("張三", 23));	//Object obj = new Student("張三",23);
		c2.add(new Student("李四", 24));
		c2.add(new Student("王五", 25));
		c2.add(new Student("趙六", 26));
		
		//獲取迭代器,迭代的時候獲取的都是Object物件
		Iterator it1 = c2.iterator();
		while(it1.hasNext()) {
			//System.out.println(it1.next());
			Student s = (Student)it1.next();//向下轉型
			System.out.println(s.getName() + "..." + s.getAge());
		}
	}
}


迭代器原理

* 迭代器原理:迭代器是對集合進行遍歷,
* 而每一個集合內部的儲存結構都是不同的,所以每一個集合存和取都是不一樣,
* 那麼就需要在每一個類中定義hasNext()和next()方法,這樣做是可以的,但是會讓整個集合體系過於臃腫,
* 迭代器是將這樣的方法向上抽取出介面,然後在每個類的內部,定義自己迭代方式,
* 這樣做的好處有二,
* 第一規定了整個集合體系的遍歷方式都是hasNext()和next()方法,
* 第二,程式碼有底層內部實現,使用者不用管怎麼實現的,會用即可 

迭代器原始碼解析

* 1,在eclipse中ctrl + shift + t找到ArrayList類
* 2,ctrl+o查詢iterator()方法
* 3,檢視返回值型別是new Itr(),說明Itr這個類實現Iterator介面
* 4,查詢Itr這個內部類,發現重寫了Iterator中的所有抽象方法 
* 2,ctrl+o查詢iterator()方法 * 3,檢視返回值型別是new Itr(),說明Itr這個類實現Iterator介面 * 4,查詢Itr這個內部類,發現重寫了Iterator中的所有抽象方法 

相關推薦

Iterator結合ArrayList集合的使用基本使用Iterator原理

迭代Iterator 介面 Iterator<E> 集合是用來儲存元素,儲存的元素需要檢視,那麼就需要迭代(遍歷)  public interface Iterator<E>

集合部分:ArrayList集合新增元素並遍歷元素

/** 集合的新增元素和遍歷 */ import java.util.*; class ArrayListTest  {public static void main(String[] args) {System.out.println("Hello World!");te

將字符串轉成整數的函數給我一下嗎簡單一下碼基本功。要求:不要調用parseInt等轉換函數

main 一段 ack substr date tin || parse pre 為了提高面試流程效率,方便用java寫一段將字符串轉成整數的函數給我看一下嗎,簡單看一下代碼基本功。 要求:不要調用parseInt等轉換函數。按位讀取字符串裏的字符進行處理將字符串轉化為整數

集合 ArrayList 集合的繼承實現關係 Collection Iterator器 增強for迴圈 泛型 集合的向下轉型

1.集合介紹    集合,集合是java中提供的一種容器,可以用來儲存多個數據。    我們知道資料多了,可以使用陣列存放或者使用ArrayList集合進行存放資料。那麼,集合和陣列既然都是容器,它們有啥區別呢? 陣列的長度是固定的。集合的長度是可變的。 集合中儲存的元素必須

使用Iterator器遍歷集合資料

迭代器(Iterator)   迭代器是一種設計模式,它是一個物件,它可以遍歷並選擇序列中的物件,而開發人員不需要了解該序列的底層結構。迭代器通常被稱為“輕量級”物件,因為建立它的代價小。   Java中的Iterator功能比較簡單,並且只能單向移動:   (1) 使

java-Iterator(器)遍歷集合

import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Iterator; import java.util.List;

設計模式(十七)——器模式(ArrayList 集合應用原始碼分析)

1 看一個具體的需求 編寫程式展示一個學校院系結構:需求是這樣,要在一個頁面中展示出學校的院系組成,一個學校有多個學院, 一個學院有多個系。如圖: 2 傳統的設計方案(類圖) 3 傳統的方式的問題分析 1) 將學院看做是學校的子類,系是學院的子類,這樣實

中介者模式分析、結構圖基本

dsm size spa article 一個 tex 行為 rac err  定義:用一個中介對象來封裝一系列的對象交互。中介者使各對象不須要顯式地相互引用。從而使其耦合松散,並且能夠獨立地改變它們之間的交互。 適用地方:中介者

訪問者模式的分析、結構圖基本

att sun 設計 type() sys ont public family for  之前我對全部的23種設計模式作了一個小總結。如今我們來對每一種設計模式作具體的分析。首先是訪問者模式: 定義:表示一個作用於某對象結構中的各

ComboBox在WPF中的綁定示例:綁定項、集合、轉換其源

ati .com med owa panel center generic tle summary 在WPF的Xaml中為ComboBox綁定數據時,由於參數很多,很容易混淆,在ListView中使用更是如此。本文通過對ComboBox在窗口和在ListView中綁定對象的

listmapset集合基本用法差異

nbsp htable body 根據 pos null clas 速度 就是 List:1.可以允許重復的對象。    2.可以插入多個null元素。 3.是一個有序容器,保持了每個元素的插入順序,輸出的順序就是插入的順序。 4.常用的實

SolidityOA幸運飛艇源碼下載概述基本碼展示

生成 查詢 記錄 eve sim rec 簽名 特權 tran Solidity是實施OA幸運飛艇源碼下載【dashengba.com】Q3266397597智能合約的契約導向的高級語言。它受到C ++,Python和JavaScript的影響,旨在針對以太坊虛擬機(EVM

集合之List中的列表

List集合特有的迭代器,ListIterator是Iterator是Iterator的子介面 在迭代式,不可以通過集合物件的方法操作集合中的元素 因為會發生ConcurrentModificationException異常 所以,在迭代器時,只能用迭代器的方法操作元素,可是Iterea

arraylist 為什麼 刪除元素時要使用器而不能使用遍歷

因為你要是遍歷了,arraylist 的長度就變了,容易陣列越界和下標問題   public class Test {      public  static  void  main(Stri

Java中的集合詳解結合 ArrayList、HashSet 的區別以及HashCode的作用。

Java中的集合:      (1)Collection                           List(有序,可重複)             ArrayList         

七種常見閾值分割程式碼(Otsu、最大熵、法、自適應閥值、手動、法、基本全域性閾值法)

整理了一些主要的分割方法,以後用省的再查,其中大部分為轉載資料,轉載連結見資料; 一、工具:VC+OpenCV 二、語言:C++ 三、原理    (1) otsu法(最大類間方差法,有時也稱之為大津演算法)使用的是聚類的思想,把影象的灰度數按灰度級分成2個部分,使得兩

黑馬程式設計師——Java集合框架(一)之器、Collection層次結構等

-----------android培訓、java培訓、java學習型技術部落格、期待與您交流!------------ 集合框架概述 一、什麼是集合框架   1.什麼是集合?   集合是指把具有相同性質的一類東西匯聚成一個整體,簡單說就是指儲存資料的一個容器。集

器刪除操作寫法解釋

1 迭代器是什麼? 迭代器是一種典型的設計模式,與集合配套使用,其目的是隱藏集合中的內部成員,並且提供對集合成員的訪問能力。其結構如下圖所示; 具體協作關係及實現方式,就不在此贅述了。 2 在迭代器上執行刪除操作 下面以刪除list中所有給定值的元素為例,介

JAVA集合的區別常用的方法、遍歷、器、泛型

這兩天又把集合複習了一遍,這裡做一個總結。 常用的集合型別有,List Set Map list和set表面最簡單的區別是: list有序集合,有索引,可以出現重複的元素 set 無序集合,無索引,不能出現重複的元素 集合泛型:  List<String>

Collection方法集合(hasNext(),next())關於

/*Iterator iterator(),獲取集合所依賴的迭代器物件通過迭代器中的方法完成集合的迭代注意:這種方式是所有集合通用的遍歷方式*/import java.util.*;public class fuck3{public static void main(Stri