Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
iterable iterator_acquirable,希望能够帮助你!!!。
1.Iterable
Iterable是java集合接口的顶级接口之一。
这是这个接口中的iterator方法,用来返回一个实现了Iterator接口的对象。
1.1Iterator接口中的方法:
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("==================================="); } }
运行结果为:
从运行结果来看我们的两个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("==============="); } }
运行结果为:
在后面新加的代码中,我们重新创建了一个迭代器,然后先使用hasNext和next遍历了前五个对象接着再使用remove删除了三个对象,最后打印出了剩余的两个对象。
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章