java数组到iterable(java数组的实现)

发布时间:2022-11-14

本文目录一览:

  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 Iterable<String> {
    protected String[] words = ("And that is how "
            + "we know the Earth to be banana-shaped.").split(" "); // 将这段字符串按照空格分解成一个字符串数组
    public Iterator<String> iterator() {
        return new Iterator<String>() { // 声明了一个实现Iterator接口的匿名内部类,并返回了内部类的实例
            private int index = 0; // 字符串数组的下标标记,相当于一个游标
            public boolean hasNext() {
                return index < words.length; // 判断下标是否小于数组长度
            }
            public String next() {
                return words[index++]; // 返回当前元素并移动游标
            }
            public void remove() { // 未实现该方法
                throw new UnsupportedOperationException();
            }
        };
    }
    // 应该这样写main方法来使用Iterator
    public static void main(String args[]) {
        IterableClass itTest = new IterableClass();
        Iterator<String> it = itTest.iterator(); // 获取遍历器
        while (it.hasNext()) { // 判断是否还有元素
            String a = it.next(); // 获取当前元素并移动游标
            System.out.println(a);
        }
    }
}

java中Iterator和Iterable的区别

Java中IteratorIterable的区别如下:

  1. Iterator是迭代器类,而Iterable是为了只要实现该接口就可以使用foreach进行迭代。
  2. Iterable中封装了Iterator接口,只要实现了Iterable接口的类,就可以使用Iterator迭代器。
  3. 集合CollectionListSet都是Iterable的实现类,所以它们及其子类都可以使用foreach进行迭代。
  4. 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);
        List<Integer> list = new ArrayList<>(); // 使用List<Integer>代替数组
        System.out.println("Please type ten integers");
        for (int i = 0; i < 10; i++) {
            list.add(scanner.nextInt());
        }
        Iterator<Integer> myIterator = list.iterator();
        int sum = 0;
        while (myIterator.hasNext()) {
            int number = myIterator.next();
            sum += number;
        }
        System.out.println(sum);
    }
}

注意:

  • 数组没有iterator方法,建议使用List<Integer>
  • sum变量应在循环外部定义,以便在循环中累加。

JAVA中Iterator的具体作用?

迭代器(Iterator)是一种设计模式,它是一个对象,可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。Iterator通常被称为“轻量级”对象,因为创建它的代价小。 Java中的Iterator功能比较简单,并且只能单向移动:

  1. 使用iterator()方法要求容器返回一个Iterator
  2. 使用next()方法获得序列中的下一个元素。
  3. 使用hasNext()方法检查序列中是否还有元素。
  4. 使用remove()方法将迭代器新返回的元素删除。 示例代码:
List<String> list = new ArrayList<>();
list.add("aa");
list.add("bb");
list.add("cc");
// 使用Iterator遍历List
Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
    String str = iter.next();
    System.out.println(str);
}

java中的数组问题

foreach语句是for语句特殊情况下的增强版本,简化了编程,提高了代码的可读性和安全性(不用担心数组越界)。相对于老的for语句来说是个很好的补充,提倡能用foreach的地方就不要再用for了。 在需要用到对集合或数组索引的情况下,foreach显得力不从心,这个时候应该使用for语句。 另外需要注意的是:foreach的遍历速度要比for慢一些。 示例对比:

// 使用for循环
for (int i = 0; i < array.length; i++) {
    System.out.println(array[i]);
}
// 使用foreach循环
for (int value : array) {
    System.out.println(value);
}