本文目錄一覽:
- 1、java Iterable接口 解釋一段程序
- 2、java中Iterator和Iterable的區別
- 3、java數組使用iterate求和的問題!
- 4、JAVA中Iterator的具體作用?
- 5、java中的數組問題
java Iterable接口 解釋一段程序
Iterator是一個遍歷器。它相當於一個游標,剛開始時指向要遍歷的集合(比如程序中的String數組)的第一個元素之前,然後每調用一次next()方法,這個游標就會向前走一格,當走到集合最後一個元素之後,hasNext()方法會返回false,表示游標已經走到最後,沒有下一個值了。
以下是詳細注釋:
import java.util.*;
public class IterableClass implements IterableString {
protected String[] words = (“And that is how “
+ “we know the Earth to be banana-shaped.”).split(” “);//將這段字符串按照“ ”來分解成一個字符串數組,即words[0]=And words[1]=that words[2]=is ……..
public IteratorString iterator() {
return new IteratorString() {這裡聲明了一個實現Iterator接口的匿名內部類,並返回了內部類的實例
private int index = 0;//字符串數組的下標標記,相當於一個游標,每調用一次next()方法,下標就會加1,就是說游標往前走一格,當這個下標等於或者大於字符數組的長度的時候,表示游標走到最後一個元素之後了,沒有下一個元素了
public boolean hasNext() {
return index words.length;//判斷下標是不是大於或等於數組長度了,是的話返回false,表示游標走到最後了
}
public String next() {
return words[index++];//先返回當前游標指向的words數組裡的數據,然後游標往前走(index++).
}
public void remove() { // Not implemented hasNext() 和next()方法都是重寫接口裡的抽象方法,而這個不是。
throw new UnsupportedOperationException();//拋出異常
}
};
}
//至於這個main方法。。。不能體現Iterator的使用,而且這樣編譯不報錯?!!!
/*public static void main(String[] args) {
for (String s : new IterableClass())
System.out.print(s + ” “);
}*/
//應該這樣寫:
public static void main(String args[]){
IterableClass itTest=new IterableClass();
IteratorString it=itTest.iterator();//獲得匿名內部類的對象,即獲得遍歷器
while(it.hasNext()){//判斷游標當前指向的是不是尾部
String a=it.next();//取出遊標當前之鄉的值,然後游標往前走一格(index++)
System.out.println(a);
}
}
}
java中Iterator和Iterable的區別
java ITerable和Iterator的區別如下:
1.Iterator是迭代器類,而Iterable是為了只要實現該接口就可以使用foreach,進行迭代.
Iterable中封裝了Iterator接口,只要實現了Iterable接口的類,就可以使用Iterator迭代器了。
2.集合Collection、List、Set都是Iterable的實現類,所以他們及其他們的子類都可以使用foreach進行迭代。
3.Iterator中和核心的方法next(),hasnext(),remove(),都是依賴當前位置,如果這些集合直接實現Iterator,則必須包括當前迭代位置的指針。當集合在方法間進行傳遞的時候,由於當前位置不可知,所以next()之後的值,也不可知。而當實現Iterable則不然,每次調用都返回一個從頭開始的迭代器,各個迭代器之間互不影響。
java數組使用iterate求和的問題!
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
public class MyFrist1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ListInteger list =new ArrayListInteger();
System.out.println(“Please type ten integers”);
for (int i = 0; i 10; i++) {
list.add(scanner.nextInt());
}
IteratorInteger myIterator = list.iterator();
int sum = 0;
while (myIterator.hasNext()) {
int number = myIterator.next();
sum = sum + number;
}
System.out.println(sum);
}
}
首先,數組沒有iterator,看你的代碼應該用ListInteger為佳
其次求和的時候sum應該在for循環外面,作用域範圍錯。
JAVA中Iterator的具體作用?
迭代器(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中插入和刪除元素。
迭代器應用:
list l = new ArrayList();
l.add(“aa”);
l.add(“bb”);
l.add(“cc”);
for (Iterator iter = l.iterator(); iter.hasNext();) {
String str = (String)iter.next();
System.out.println(str);
}
/*迭代器用於while循環
Iterator iter = l.iterator();
while(iter.hasNext()){
String str = (String) iter.next();
System.out.println(str);
}
*/
java中的數組問題
foreach語句是for語句特殊情況下的增強版本,簡化了編程,提高了代碼的可讀性和安全性(不用怕數組越界)。相對老的for語句來說是個很好的補充。提倡能用foreach的地方就不要再用for了。在用到對集合或者數組索引的情況下,foreach顯得力不從心,這個時候是用for語句的時候了。foreach一般結合泛型使用
還有一點要注意的是:foreach 的遍歷速度要比for慢。
兩個可以對比着使用..
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/245601.html