概述
数组、集合常见遍历方法
一、for循环
数组的遍历:数组的for循环主要是通过arr.length,来获取数组的长度,使用for循环进行,进行循环,获取出每一个数组元素,打印元素。
/**
* 通过基本的for循环进行遍历
*/
public static void traverseByFor(int[] arr) {
if (arr == null) {//首先判定数组是否为空
return;
}
System.out.println("以下是通过基本for循环的遍历结果");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
集合遍历:list集合的for循环主要是通过list.length(),来获取集合的长度,使用for循环进行,进行循环,获取出每一个集合元素,打印元素。
//常用遍历list集合的方式
List<String> list=new ArrayList<String>();//定义一个字符串类型的集合
list.add("D");//分别向集合中加入A、B、C、D四个元素
list.add("B");
list.add("A");
list.add("C");
System.out.println("常规for循环结果:");
for(int i=0;i<list.size();i++){//遍历list集合
System.out.println(list.get(i));
}
二、Iterator构造器
1.Iterator构造器的概述:
public Iterator<E> iterator():获取一个迭代器,用于遍历集合中的元素。
2.使用Iterator构造器的注意事项和常见问题
1)注意事项:Iterator迭代器是一次性的,单向的,只能由集合的头部元素向尾部元素遍历,反向则不行。
public class Demo02 {
public static void main(String[] args) {
//1.创建一个集合对象
ArrayList<String> list = new ArrayList<>();
list.add("杨幂");
list.add("柳岩");
list.add("迪丽热巴");
list.add("高圆圆");
//2.获取一个"迭代器"对象
Iterator<String> it = list.iterator();
while (it.hasNext()) {//判断是否有元素可以迭代,使用while循环,使用it.next获取元素
System.out.println(it.next());//获取一个元素
}
}
}
2).Iterator迭代器操作的常见问题:
A.一次的hasNext(),多次的next()
//1.一次的hasNext(),多次的next()
Iterator<String> it2 = list.iterator();
while (it2.hasNext()) {//一次hasNext()
String s = it2.next();//一次next()
//System.out.println(s);
System.out.println(it2.next());//第二次的next(),很危险,可能会抛异常
}
B.并发修改异常:通过迭代器遍历的时候,然后通过集合对象修改集合的长度。
//2.并发修改异常
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String s = it.next();
System.out.println(s);
//判断元素,并删掉元素
if ("高圆圆".equals(s)) {
//list.remove(s);//不要通过"集合对象"删除
it.remove();//要通过"迭代器对象"删除
}
}
三、增强for循环:
在JDK5以前的版本中,遍历数组或集合中的元素,需要先获得数组的长度或集合的迭代器,比较麻烦。JDK5中定义了一种新的语法----增强for循环,以简化此类操作。增强for循环只能用在数组或实现Iterable接口的集合上。
语法格式:
for(变量类型 变量:需迭代的数组或集合){
//变量类型指的是数组中的元素后者集合中的对象的的数据类型
//变量指的是数组中的元素或者集合中对象
//需要迭代的数组或集合就是我们想要迭代或者循环的集合
}
增强for循环遍历集合示例代码:
public class Demo03 {
public static void main(String[] args) {
//1.创建一个集合对象
Collection<String> list = new ArrayList<>();
list.add("杨幂");
list.add("柳岩");
list.add("迪丽热巴");
list.add("高圆圆");
for (String s : list) {
System.out.println(s);
//语法糖,编译后,就是:迭代器
//我们对以下代码进行反编译:
//反编译后:
//Integer i;
//for(Iterator iterator = list.iterator();
//iterator.hasNext();
//System.out.println(i)){
//i = (Integer)iterator.next();
//}
//
//反编译后的代码其实比较复杂,我们按照执行顺序拆解一下:
//Integer i; 定义一个临时变量i
//Iterator iterator = list.iterator(); 获取List的迭代器
//iterator.hasNext(); 判断迭代器中是否有未遍历过的元素
//i = (Integer)iterator.next(); 获取第一个未遍历的元素,赋值给临时变量i
//System.out.println(i) 输出临时变量i的值
//如此循环往复,直到遍历完List中的所有元素。
//通过反编译,我们看到,其实JAVA中的增强for循环底层是通过迭代器模式来实现的。
}
增强for循环遍历数组示例代码:
int[] arr = {1, 32, 4, 252, 42, 5};
for (int i : arr) {//语法糖,编译后,就是:普通for循环
System.out.println(i);
}
}
}
最后
以上就是单薄糖豆为你收集整理的数组、集合的遍历的全部内容,希望文章能够帮你解决数组、集合的遍历所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复