Ⅰ java 中集合已經有增刪改查了為什麼還要迭代器
您好,提問者:
迭代器的神奇之處在於:可以迭代很多,比如Set、List介面下的類。
雖然List有.get方法,但是遠遠不能滿足需求,對於面向抽象來講,這些集合框架的類既然都可以存儲,那麼肯定都可以迭代,所以抽取出來Iterator。
另外List迭代過程中有增刪修改的話可以使用ListIterator介面,也是Iterator介面的子介面。。。。
Ⅱ java中什麼叫迭代,什麼叫迭代器
迭代:
是重復反饋過程的活動,其目的通常是為了逼近所需目標或結果。每一次對過程的重復稱為一次「迭代」,而每一次迭代得到的結果會作為下一次迭代的初始值。
重復執行一系列運算步驟,從前面的量依次求出後面的量的過程。此過程的每一次結果,都是由對前一次所得結果施行相同的運算步驟得到的。例如利用迭代法*求某一數學問題的解。
對計算機特定程序中需要反復執行的子程序*(一組指令),進行一次重復,即重復執行程序中的循環,直到滿足某條件為止,亦稱為迭代。
迭代器(Iterator)模式:
又叫做游標模式,它的含義是,提供一種方法訪問一個容器對象中各個元素,而又不需暴露該對象的內部細節。
注意:Java的集合框架的集合類,有的時候也稱為容器。
從定義上看,迭代器是為容器而生,它本質上就是一種遍歷的演算法。因為容器的實現千差萬別,很多時候不可能知道如何去遍歷一個集合對象的元素。Java為我們提供了使用迭代的介面,Java的所有集合類丟失進行迭代的。
簡單的說,迭代器就是一個介面Iterator,實現了該介面的類就叫做可迭代類,這些類多數時候指的就是java.util包下的集合類。
總結:
迭代器,提供一種訪問一個集合對象各個元素的途徑,同時又不需要暴露該對象的內部細節。java通過提供Iterator和Iterable倆個介面來實現集合類的可迭代性,迭代器主要的用法是:首先用hasNext()作為循環條件,再用next()方法得到每一個元素,最後在進行相關的操作。
(2)java集合迭代擴展閱讀
首先,創建了一個List的集合對象,並放入了倆個字元串對象,然後通過iterator()方法得到迭代器。iterator()方法是由Iterable介面規定的,ArrayList對該方法提供了具體的實現,在迭代器Iteartor介面中,有以下3個方法:
1、hasNext()該方法英語判斷集合對象是否還有下一個元素,如果已經是最後一個元素則返回false
2、next()把迭代器的指向移到下一個位置,同時,該方法返回下一個元素的引用
3、remove() 從迭代器指向的Collection中移除迭代器返回的最後一個元素,該操作使用的比較少。
注意:從Java5.0開始,迭代器可以被foreach循環所替代,但是foreach循環的本質也是使用Iterator進行遍歷的。
Ⅲ Java中如果集合迭代器已經迭代完了,如果還想迭代,只能在調用一遍iterator返回一個新的嗎
答: 是的,需要重新調用.iterator()方法,放回1個新的迭代器.
原因: 1: 因為迭代器使用完了,裡面也就沒有元素了,
2: 並且java語言沒有提供重置的方法.
代碼如下
importjava.util.ArrayList;
importjava.util.Iterator;
publicclassListDemo{
publicstaticvoidmain(String[]args){
ArrayList<Integer>list=newArrayList<Integer>();
list.add(5);
list.add(3);
list.add(2);
Iterator<Integer>it=list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
System.out.println(it.hasNext());//false表示沒有元素了
//System.out.println(it.next());//會拋出異常NoSuchElementException
it=list.iterator();//從集合里重新獲得迭代器
}
}
拓展思考:
對於此類問題,往往是對java類不太熟悉, 可以經常使用java api文檔, 查看文檔,你會快速了解到某個類的方法有哪些, 繼承了哪些介面等情況,
比如Iterator類的方法說明如下
方法摘要
boolean hasNext()
如果仍有元素可以迭代,則返回 true。E next()
返回迭代的下一個元素。void remove()
從迭代器指向的 collection 中移除迭代器返回的最後一個元素(可選操作)。
Ⅳ Java 實現迭代功能的程序
1、迭代主要是對一些集合類如List、map等進行迭代
2、獲取集合類對象,如List
dataList
3、獲取dataList的迭代器
4、利用while循環迭代
示例:
List
dataList
=
new
ArrayList
dataList.add("北京");
dataList.add("天津");
//獲取dataList的迭代器
Iterator
it
=
dataList.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
Ⅳ 關於JAVA的迭代集合,是什麼意思
一般的for語句是這么寫的,
for(int i =0; i <10; i++) 定義一個初始值,然後定義一個邊界,最後得有一個對初始值的操作。
在這個for語句也是一樣的,
for (Iterator iterator = collection.iterator(); iterator.hasNext();) {
type name = (type) iterator.next();
}
Iterator iterator = collection.iterator(); 這個是對迭代器的初始化。
iterator.hasNext(); 這個算是邊界(只要返回是true,它會一直執行下去),確認是否有下一個元素。
type name = (type) iterator.next(); 對初始值的操作,為了避免死循環。意思是把迭代器裡面的每一個元素一個一個取出來,每調用一次這個方法,它會指向下一個元素。
總結一下的話,只要實現了iterator();這個方法的集合,都叫迭代集合。
Ⅵ java的List集合迭代器
是刪除了的,親。是你弄錯 了,你對比一下我給你寫的代碼,你就知道你的問題出在哪了,我只加了一句話。
importjava.util.ArrayList;
importjava.util.Iterator;
importjava.util.List;
publicclassArrayListTest
{
publicstaticvoidmain(String[]args)
{
List<Object>list=newArrayList<Object>();
list.add((byte)56);
list.add((short)5656);
list.add(565656);
list.add(56565656L);
Iteratorit=list.iterator();
while(it.hasNext())
{
Objectobj=it.next();
if(objinstanceofInteger)
{
it.remove();
//刪除成功以後就不應該再輸出這個刪除的值,明白嗎?
continue;
}
System.out.println(obj);
}
}
}
有什麼問題你都可以追問我,沒問題,望採納,謝謝
Ⅶ Java集合迭代為什麼會發生異常
在用迭代器iterator迭代元素的時候,是不能夠直接添加刪除元素的,就是說不能進行修改,否則可能會產生異常。移除元素可以使用it.remove()這個方法是標記移除,等遍歷完才真正刪除。你上述程序沒有發生異常是因為學習C#語言是set的最後一個元素,但是在裡面添加,循環中沒有列印出來吧。
Ⅷ 在java中「迭代」是什麼意思
重復的反饋某一過程(操作)叫迭代,
在java中,就是循環重復的進行某一操作,比如一個程序要累加1到100的和,
那麼只要定義一個變數sum,讓它重復的進行累加操作:
int sum =0;
for( int i=1; i<=100; i++ ){
sum = sum +i;
}
其中執行一次sum = sum + i ;就稱之為一次迭代,每一次迭代得到的結果(sum + i 的和)會作為下一次迭代的初始值(結果賦值給sum變數後,這個變數又作下一次迭代的初始值);這就是迭代與普通循環的區別。
Ⅸ java中」遍歷「,」迭代「是什麼意思
遍歷和迭代在每種語言中的意思都是一樣的.
迭代(iterate),指的是按照某種順序逐個訪問列表中的每一項。比如,for語句。
遍歷(traversal),指的是按照一定的規則訪問樹形結構中的每個節點,而且每個節點都只訪問一次。