Java集合遍历教程
在
Java Iterator方式遍历
说明
Iterator 是专门的迭代输出接口,将集合里面的元素一个一个的遍历,然后判断,如果有内容就将其内容取出,一直到结尾。Iterator 是一个接口,常用方法有:
常用方法
方法名
描述
boolean hasNext();
判断是否有下个值
E next();
取出下个元素的内容
void remove()
删除当前元素
案例
package com.haicoder.net.collection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ArrayListTest{
public static void main(String[] args){
System.out.println("嗨客网(www.haicoder.net)");
//定义一个 ArrayList 对象
List strArrayList = new ArrayList();
//添加元素操作
strArrayList.add("嗨客网");
strArrayList.add("你好啊");
strArrayList.add(1, "愿你存活100年");
System.out.println("集合初始数据:" + strArrayList);
Iterator iterator = strArrayList.iterator();
while (iterator.hasNext()) {
String value = iterator.next();
if (value.equals("愿你存活100年")) {
System.out.println("移除元素");
iterator.remove();
} else {
System.out.println("元素的值为:" + value);
}
}
System.out.println("遍历集合并且移除数据后的结合数据:" + strArrayList);
}
}
运行结果如下:
我们使用了
我们在学习 list 的时候,知道 list 里面有 remove 方法,这个方法在正式的编程环境中,建议开发者慎用,使用 list 的 remove 方法,会将 list 对象的结构改变,它会让数组的长度减少,操作不当,很容易引起
迭代输出如下图:
Java ListIterator方式遍历
说明
与 Iterator 不同的是 ListIterator 可以实现从后向前或者由前向后双向输出。但是双输出只能够 List 的类才能够使用。常用的方法有:
常用方法
方法名
描述
boolean hasNext();
判断是否有下个值
E next();
获取下一个元素
void remove();
移除当前元素
void add(E e);
在集合里面添加元素
boolean hasPrevious();
判断是否有上一个元素
E previous();
获取前一个元素
int nextIndex();
返回下一个元素的索引号
int previousIndex();
返回上一个元素的索引号
void set(E e);
替换元素
案例
package com.haicoder.net.collection;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ArrayListTest{
public static void main(String[] args){
System.out.println("嗨客网(www.haicoder.net)");
//定义一个 ArrayList 对象
List strArrayList = new ArrayList();
//添加元素操作
strArrayList.add("嗨客网");
strArrayList.add("你好啊");
strArrayList.add(1, "愿你存活100年");
ListIterator allIterators = strArrayList.listIterator();
allIterators.add("添加的元素");
System.out.println("集合最终数据:" + strArrayList); //添加元素
System.out.println("由前向后输出:");
while (allIterators.hasNext()) {
String tmpStr = allIterators.next();
System.out.println(tmpStr);
}
//因为前面执行了从前往后遍历,所以这边的索引会在最后一个元素上面,执行向前遍历的时候,能够由数据
System.out.println("由后向前输出:");
while (allIterators.hasPrevious()) {
String tmpStr = allIterators.previous();
System.out.println(tmpStr);
}
}
}
运行结果如下:
首先我从前往后遍历,然后再从后往前遍历的时候,可以获取到数据,但一开始就从后往前遍历,那么肯定是没数据的。ListIterator 只适合用于 List 集合。
foreach方式遍历
说明
我们可以通过
for增强语法
for(类 对象 : 集合){}
描述
关键字
描述
for
循环遍历的开始
类
和集合里面的类一样,或者是集合里面的类的父类
对象
前面的类声明的一个对象
集合
我们需要遍历对集合
案例
package com.haicoder.net.collection;
import java.util.ArrayList;
import java.util.List;
public class ArrayListTest{
public static void main(String[] args){
System.out.println("嗨客网(www.haicoder.net)");
//定义一个 ArrayList 对象
List strArrayList = new ArrayList();
//添加元素操作
strArrayList.add("嗨客网");
strArrayList.add("你好啊");
strArrayList.add(1, "愿你存活100年");
System.out.println("集合初始数据:" + strArrayList);
//普通遍历
for (int i = 0; i < strArrayList.size(); i++) {
System.out.println("位置 " + i + " 元素内容:" + strArrayList.get(i));
}
//for 增强遍历
for (String tmpStr : strArrayList) {
System.out.println("for 增强遍历:" + tmpStr);
}
}
}
运行结果如下
我们使用了 for 的普通遍历输出和 for 增强输出,发现效果是一样的。for 增强简化了代码,方便的操作。
Java集合遍历总结
集合遍历有 Iterator 遍历,ListIterator 遍历和 for 遍历以及 for 增强遍历。主要的推崇的还是使用 Iterator 遍历,这样的话,对集合进行删除,添加等操作不会出现问题,但是使用 for 或者 for 增强遍历,进行增删操作等时候,会引起一些问题。这边读者在使用的时候需要注意。