❶ 簡述java的幾種設計模式
JAVA中使用設計模式寫代碼能使代碼重用、直觀、可靠,共有23種設計模式,分別是:
創建型模式:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式;
結構型模式:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式;
行為型模式:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式,
❷ JAVA iterator 迭代器模式的next() 的問題 求高手回答 謝謝! 真誠求學 在線等。
關於你的疑問,請參考我的學習筆記吧。
hasNext、next方法:迭代器用於遍歷集合元素。獲取迭代器可以使用Collection定義的方法:Iterator iterator()
迭代器Iterator 本身是一個介面,集合在重寫Collection的iterator()方法時利用內部類提供了迭代器的實現。Iterator提供了統一的遍歷集合元素的方式,其提供了用於遍歷集合的兩個方法:boolean hasNext()判斷集合是否還有元素可以遍歷。
E next() 返回迭代的下一個元素。
每一種集合的實現類都是各自的迭代器實現,不用關心具體迭代器的類型,只將他們當作迭代器用於遍歷集合元素即可。應當遵循「問-取-刪」模式,適用於while循環。
Iterator<String>it = c1.iterator(); --- 問的過程,詢問c1集合中是否還有元素
while( it.hasNext() )
{
String str = (String) it.next(); --- 取出來的是Object類型,所以需要轉換類型
}
注意:應建立在hasNext返回true的基礎上執行next()方法
迭代過程中,不能調用集合的相關方法來改變集合中的元素,不然會拋出異常。應使用迭代器自身提供的方法操作。迭代器的刪除方法是在原集合中刪除元素。在調用remove方法前必須通過迭代器的next()方法迭代過元素,那麼刪除的就是這個元素,並且不能連續接著調用remove。
While( it.hasNext() )
{
String str = (String) it.next();
if(「#」.equals ( str ) )
{ //凡是相互比較,應當讓字變數.equals(變數),可以避免遇到null空指針異常
it.remove();
}
}
❸ java迭代器到底怎麼使用
我們在使用List,Set的時候,為了實現對其數據的遍歷,我們經常使用到了Iterator(跌代器)。 使用跌代器,你不需要干涉其遍歷的過程,只需要每次取出一個你想要的數據進行處理就可以了。但是在使用的時候也是有不同的。 List和Set都有iterator()來取得其迭代器。對List來說,你也可以通過listIterator()取得其迭代器,兩種迭代器在有些時候是不能通用的,Iterator和ListIterator主要區別在以下方面: 1. ListIterator有add()方法,可以向List中添加對象,而Iterator不能 2. ListIterator和Iterator都有hasNext()和next()方法,可以實現順序向後遍歷,但是ListIterator有hasPrevious()和previous()方法,可以實現逆向(順序向前)遍歷。Iterator就不可以。 3. ListIterator可以定位當前的索引位置,nextIndex()和previousIndex()可以實現。Iterator沒有此功能。 4. 都可實現刪除對象,但是ListIterator可以實現對象的修改,set()方法可以實現。Iierator僅能遍歷,不能修改。 因為ListIterator的這些功能,可以實現對LinkedList等List數據結構的操作。 其實,數組對象也可以用迭代器來實現。 org.apache.commons.collections.iterators.ArrayIterator就可以實現此功能。 一般情況下,我們使用Iterator就可以了,如果你需要進行記錄的前後反復檢索的話,你就可以使用ListIterator來擴展你的功能,(有點象JDBC中的滾動結果集)。 ListIterator是一個雙向迭代器。ListIterator沒有當前元素,它的當前游標是位於調用next()和previsous()返回的元素之間。
❹ java里遞歸和迭代分別是什麼演算法啊
迭代是普通的循環。
例:求從1加到10
int sum=0
for(int i=0;i<= 10;i++){
sum=sum+i;
}
遞歸是指一個函數直接或間接調用自己。
好比:從前有個廟廟里有個大和尚和小和尚,大和尚叫小和尚講故事,小和尚說從前有個廟廟里有個大和尚和小和尚,小和尚叫大和尚講故事,大和尚說從前....
遞歸的特點:
必有三個條件:
1. 間接或直接調用自己。
2. 一定要有退出的條件(比方說大和尚口乾了不聽故事了)。否則就是死循環
3。要有邏輯體(想要做的事);
public int sum(int x){
if(x<=0){
return x;
}
return x+sum(x-1);
}
int s=10;
int total=sum(s);
該例中,sum函數總是調用自己,return x+sum(x-1);
sum有退出條件, x<=0
最後的結果是把 10+9+8+7+... 1 返回
在很多種情況下,迭代和遞歸都可以完成相同的功能, 不過遞歸有些功能迭代就完成不了。 並且代碼沒有遞歸簡潔,熟練使用遞歸後能提高代碼質量。
❺ Java中什麼叫迭代器
迭代器(Iterator)
迭代器是一種設計模式,它是一個對象,它可以遍歷並選擇序列中的對象,而開發人員不需要了解該序列的底層結構。迭代器通常被稱為「輕量級」對象,因為創建它的代價小。
Java中的Iterator功能比較簡單,並且只能單向移動:
(1) 使用方法iterator()要求容器返回一個Iterator。第一次調用Iterator的next()方法時,它返回序列的第一個元素。注意:iterator()方法是java.lang.Iterable介面,被Collection繼承。
(2) 使用next()獲得序列中的下一個元素。
(3) 使用hasNext()檢查序列中是否還有元素。
(4) 使用remove()將迭代器新返回的元素刪除。
Iterator是Java迭代器最簡單的實現,為List設計的ListIterator具有更多的功能,它可以從兩個方向遍歷List,也可以從List中插入和刪除元素。
❻ java中的迭代器是什麼東西,有什麼作用,求通俗易懂解釋,
您好,提問者:
Java中的迭代器就是遍歷容器的,比如,我先寫個數組。
//String[]遍歷
String[]arr=newString[]{"aaa","bbb","ccc"};
for(inti=0;i<arr.length;i++){
System.out.println(arr[i]);
}
//下面講一下迭代器的用戶,迭代器比如:Iterator,用於迭代集合
List<String>list=newArrayList<String>();
for(Iterator<String>it=list.iterator();it.hasNext();){
Stringname=list.next();
System.out.println(name);
}
//其實ArrayList的底層就是一個數組,也可以使用循環來做
for(inti=0;i<list.size();i++){
System.out.println(list.get(i));
}
❼ 怎麼理解java中迭代器
迭代器就是把一個集合類(如:List,ArrayList)裡面的東西一次全取出來,按照原來的順序排成一個隊(比如在醫院),然後你對它說"下一個"(.next)的時候,隊頭那個傢伙就出來了(返回一個對象),你就可以給它看病了,然後當沒有人了的時候你再喊"下一個",護士小姐就會對你說沒有人了(next返回false),你就可以下班了
❽ java中」遍歷「,」迭代「是什麼意思
遍歷和迭代在每種語言中的意思都是一樣的.
迭代(iterate),指的是按照某種順序逐個訪問列表中的每一項。比如,for語句。
遍歷(traversal),指的是按照一定的規則訪問樹形結構中的每個節點,而且每個節點都只訪問一次。
❾ java 迭代器模式 之間傳值怎麼辦
迭代這個名詞對於熟悉Java的人來說絕對不陌生。我們常常使用JDK提供的迭代介面進行java collection的遍歷:
Iterator it = list.iterator();
while(it.hasNext()){
//using 「it.next();」do some businesss logic
}
而這就是關於迭代器模式應用很好的例子。
二、 定義與結構
迭代器(Iterator)模式,又叫做游標(Cursor)模式。GOF給出的定義為:提供一種方法訪問一個容器(container)對象中各個元素,而又不需暴露該對象的內部細節。
從定義可見,迭代器模式是為容器而生。很明顯,對容器對象的訪問必然涉及到遍歷演算法。你可以一股腦的將遍歷方法塞到容器對象中去;或者根本不去提供什麼遍歷演算法,讓使用容器的人自己去實現去吧。這兩種情況好像都能夠解決問題。
然而在前一種情況,容器承受了過多的功能,它不僅要負責自己「容器」內的元素維護(添加、刪除等等),而且還要提供遍歷自身的介面;而且由於遍歷狀態保存的問題,不能對同一個容器對象同時進行多個遍歷。第二種方式倒是省事,卻又將容器的內部細節暴露無遺。
而迭代器模式的出現,很好的解決了上面兩種情況的弊端。先來看下迭代器模式的真面目吧。
迭代器模式由以下角色組成:
1) 迭代器角色(Iterator):迭代器角色負責定義訪問和遍歷元素的介面。
2) 具體迭代器角色(Concrete Iterator):具體迭代器角色要實現迭代器介面,並要記錄遍歷中的當前位置。
3) 容器角色(Container):容器角色負責提供創建具體迭代器角色的介面。
4) 具體容器角色(Concrete Container):具體容器角色實現創建具體迭代器角色的介面——這個具體迭代器角色於該容器的結構相關。