illegalstateexception是什么异常

您所在的位置:网站首页 迭代器怎么使用有什么特点呢 illegalstateexception是什么异常

illegalstateexception是什么异常

2024-06-04 15:44| 来源: 网络整理| 查看: 265

点击上方“千锋Java学院”,选择“置顶公众号”

每天一道面试模拟真题及解析

课前导读

●回复"每日一练"获取以前的题目,持续更新!

●我希望大家积极参与!有什么不懂可以加小千微信进行讨论

★把面试准备工作,拆分、融入到平时每天

Iterator怎么使用?有什么特点?

参考答案:

Iterator 接口源码中的方法 java.lang.Iterable 接口被 java.util.Collection 接口继承,java.util.Collection 接口的 iterator() 方法返回一个 Iterator 对象next() 方法获得集合中的下一个元素hasNext() 检查集合中是否还有元素remove() 方法将迭代器新返回的元素删除forEachRemaining(Consumer super E> action) 方法,遍历所有元素   JDK 1.8 源码如下: //是否有下一个元素boolean hasNext();//下一个元素E next();//从迭代器指向的集合中删除迭代器返回的最后一个元素default void remove() { throw new UnsupportedOperationException("remove");}//遍历所有元素default void forEachRemaining(Consumer super E> action) { Objects.requireNonNull(action); while (hasNext()) action.accept(next());} Iterator 的使用示例: public class TestIterator { static List list = new ArrayList(); static { list.add("111"); list.add("222"); list.add("333"); } public static void main(String[] args) { testIteratorNext(); System.out.println(); testForEachRemaining(); System.out.println(); testIteratorRemove(); } //使用 hasNext 和 next遍历 public static void testIteratorNext() { Iterator iterator = list.iterator(); while (iterator.hasNext()) { String str = iterator.next(); System.out.println(str); } } //使用 Iterator 删除元素 public static void testIteratorRemove() { Iterator iterator = list.iterator(); while (iterator.hasNext()) { String str = iterator.next(); if ("222".equals(str)) { iterator.remove(); } } System.out.println(list); } //使用 forEachRemaining 遍历 public static void testForEachRemaining() { final Iterator iterator = list.iterator(); iterator.forEachRemaining(new Consumer() { public void accept(String t) { System.out.println(t); } }); }}

注意事项

在迭代过程中调用集合的 remove(Object o) 可能会报 java.util.ConcurrentModificationException 异常

forEachRemaining 方法中 调用Iterator 的 remove 方法会报 java.lang.IllegalStateException 异常

//使用迭代器遍历元素过程中,调用集合的 remove(Object obj) 方法可能会报 java.util.ConcurrentModificationException 异常 public static void testListRevome() { ArrayList aList = new ArrayList(); aList.add("111"); aList.add("333"); aList.add("222"); System.out.println("移除前:"+aList); Iterator iterator = aList.iterator(); while(iterator.hasNext()) { if("222".equals(iterator.next())) { aList.remove("222"); } } System.out.println("移除后:"+aList); } //JDK 1.8 Iterator forEachRemaining 方法中 调用Iterator 的 remove 方法会报 java.lang.IllegalStateException 异常 public static void testForEachRemainingIteRemove () { final Iterator iterator = list.iterator(); iterator.forEachRemaining(new Consumer() { public void accept(String t) { if ("222".equals(t)) { iterator.remove(); } } }); } db0a82ba19c1e58b80a28d53754a79da.png ▼ 点击 阅读原文 抢预约免费试听课程名额


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3