iterable iterator_acquirable

(5) 2024-07-14 18:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
iterable iterator_acquirable,希望能够帮助你!!!。

1.Iterable

Iterable是java集合接口的顶级接口之一。

iterable iterator_acquirable_https://bianchenghao6.com/blog__第1张

这是这个接口中的iterator方法,用来返回一个实现了Iterator接口的对象。

1.1Iterator接口中的方法:

iterable iterator_acquirable_https://bianchenghao6.com/blog__第2张

1.1.1forEachRemaining方法

看下面这段代码:

import java.util.ArrayList; import java.util.Iterator; public class Test { public static void main(String[] args) { ArrayList<Integer> arrayList = new ArrayList<>(); for (int i = 0; i < 10; i++) { arrayList.add(i); } Iterator<Integer> iterator1 = arrayList.iterator(); iterator1.forEachRemaining(a -> System.out.print(a + " ")); System.out.println(); System.out.println("==============="); while (iterator1.hasNext()) { System.out.println(iterator1.next()); } System.out.println("==================================="); while (iterator1.hasNext()) { System.out.println(iterator1.next()); } System.out.println("==================================="); } } 

运行结果为:

iterable iterator_acquirable_https://bianchenghao6.com/blog__第3张

从运行结果来看我们的两个while语句并没有做任何事情,事实上forEachRemaining方法访问迭代器中的元素,并传递到指定的动作(在上段代码中指定动作就是打印访问到的元素),直到没有更多元素,或者这个动作抛出一个异常,显然在上段代码中,我们使用该方法时并没有访问任何元素,所以迭代器中的剩余元素就是所有元素了,等到之后while语句访问下一个元素时,迭代器中自然就没有了可以访问的元素,所以也不会执行while语句。

1.1.2hasNext()方法

该方法的作用是如果存在另外一个可访问的元素,返回true,该方法常常搭配next方法完成对迭代器中对象的遍历。

1.1.3next()方法

此方法返回将要访问的下一个对象。如果已经到达了集合的末尾,将抛出一个NosuchElementException的异常。

1.1.4remove方法

删除上次访问的对象,常常搭配next方法使用。如果上次访问之后集合已经发生了变化,这个方法就会抛出一个IllegalStateException异常

下面我们给出一段代码,并且和上段代码作比较:

import java.util.ArrayList; import java.util.Iterator; public class Test { public static void main(String[] args) { ArrayList<Integer> arrayList = new ArrayList<>(); for (int i = 0; i < 10 ; i++) { arrayList.add(i); } Iterator<Integer> iterator1 = arrayList.iterator(); iterator1.forEachRemaining(a -> System.out.print(a+" ")); System.out.println(); System.out.println("==============="); while (iterator1.hasNext()){ System.out.println(iterator1.next()); } System.out.println("==================================="); while (iterator1.hasNext()){ System.out.println(iterator1.next()); } System.out.println("==================================="); Iterator<Integer> iterator2 = arrayList.iterator(); int i = 0; while (iterator2.hasNext()){ System.out.print(iterator2.next() + " "); i++; if (i == 5){ break; } } while(iterator2.hasNext()){ iterator2.next(); iterator2.remove(); i++; if (i == 8){ break; } } System.out.println("==================================="); iterator2.forEachRemaining(a -> System.out.print(a+" ")); System.out.println(); System.out.println("==============="); } } 

 运行结果为:

iterable iterator_acquirable_https://bianchenghao6.com/blog__第4张

在后面新加的代码中,我们重新创建了一个迭代器,然后先使用hasNext和next遍历了前五个对象接着再使用remove删除了三个对象,最后打印出了剩余的两个对象。

 

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复