java數組到iterable(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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:10
下一篇 2024-12-12 13:10

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29

發表回復

登錄後才能評論