Java 集合学习之——Java 的Iterable接口的使用
程序员文章站
2022-04-15 22:18:18
...
参考:https://www.cnblogs.com/LittleHann/p/3690187.html
虽然知道Iterable接口可以用来遍历集合类中的内容,但是具体操作时还是遇到下面的问题了,
你知道Iterable默认指针指的的第一个对象还是,指针变量呢?看完下面这个你或许就知道了
第一个例子代码:
package ids.autoview.tw.acconsys.test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorTest {
public static void main(String[] args){
List<String> l = new ArrayList<>();
for (int i=0;i<10;i++){
l.add(Integer.toString(i));
}
Iterator<String> i = l.iterator();
if(i.hasNext()){
i.remove();
}
for (String s :
l) {
System.out.println(s);
}
}
}
运行后报如下错误
ids.autoview.tw.acconsys.test.IteratorTest
Exception in thread "main" java.lang.IllegalStateException
at java.util.ArrayList$Itr.remove(ArrayList.java:864)
at ids.autoview.tw.acconsys.test.IteratorTest.main(IteratorTest.java:17)
Process finished with exit code 1
第二个例子代码:
package ids.autoview.tw.acconsys.test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorTest {
public static void main(String[] args){
List<String> l = new ArrayList<>();
for (int i=0;i<10;i++){
l.add(Integer.toString(i));
}
Iterator<String> i = l.iterator();
i.next();
if(i.hasNext()){
i.remove();
}
for (String s :
l) {
System.out.println(s);
}
}
}
运行结果:
1
2
3
4
5
6
7
8
9
Process finished with exit code 0
第一个例子和第二个例子最大的区别是,第二个例子在执行Iterator的remove方法之前,先执行了next的操作,next之前,指针指的是变量i本身,next之后才指的是第一个内容。
上一篇: robot_pose_ekf配置和使用
下一篇: equals()和==
推荐阅读
-
Java中的容器(集合)之ArrayList源码解析
-
Java之JDK的下载与安装,java环境变量的配置,Editplus的下载与使用
-
Java中的容器(集合)之HashMap源码解析
-
Java开发之使用websocket实现web客户端与服务器之间的实时通讯
-
[ Java学习基础 ] Java的对象容器 -- 集合
-
一、Java学习中的总结---方法的使用
-
Java基础学习-基本数据类型变量的定义和使用
-
Java集合系列(二):ArrayList、LinkedList、Vector的使用方法及区别
-
5.3类集(java学习笔记)集合的输出
-
Java学习笔记十八:Java面向对象的三大特性之封装