Java集合遍历的方法有哪些

Java集合遍历的方法有哪些

1.普通for循环

只适用于支持随机访问的集合

java

复制代码

import java.util.*;

public class NormalForDemo {

public static void main(String[] args) {

List list = Arrays.asList("A", "B", "C");

for (int i = 0; i < list.size(); i++) {

System.out.println("索引 " + i + " -> " + list.get(i));

}

}

}

2.增强for循环

最常见、简洁,底层其实是迭代器(Iterator)

java

复制代码

import java.util.*;

public class ForEachDemo {

public static void main(String[] args) {

List list = Arrays.asList("A", "B", "C");

for (String s : list) {

System.out.println(s);

}

}

}

3.Iterator 迭代器

支持安全删除(iterator.remove()),是遍历 Collection 的标准方式

java

复制代码

import java.util.*;

public class IteratorDemo {

public static void main(String[] args) {

List list = new ArrayList<>(Arrays.asList("A", "B", "C"));

Iterator it = list.iterator();

while (it.hasNext()) {

String s = it.next();

if ("B".equals(s)) {

it.remove(); // 安全删除元素

}

System.out.println(s);

}

System.out.println("删除后的集合: " + list);

}

}

4.ListIterator(双向迭代器)

Iterator的子类,仅用于 List,可以正向/反向遍历,还能在遍历时修改、插入元素

java

复制代码

import java.util.*;

public class ListIteratorDemo {

public static void main(String[] args) {

List list = new ArrayList<>(Arrays.asList("A", "B", "C"));

ListIterator it = list.listIterator();

while (it.hasNext()) {

String s = it.next();

if ("B".equals(s)) {

it.set("BB"); // 修改当前元素

it.add("X"); // 在当前位置插入元素

}

}

// 反向遍历

while (it.hasPrevious()) {

System.out.println(it.previous());

}

}

}

5.forEach + Lambda (Java 8+)

函数式写法,简洁优雅

java

复制代码

import java.util.*;

public class ForEachLambdaDemo {

public static void main(String[] args) {

List list = Arrays.asList("A", "B", "C");

// Lambda

list.forEach(s -> System.out.println(s));

// 方法引用

list.forEach(System.out::println);

}

}

6.Stream API (Java 8+)

适合做链式处理,可以配合 filter、map、sorted 等进行过滤、转换、排序等操作

java

复制代码

import java.util.*;

public class StreamDemo {

public static void main(String[] args) {

List list = Arrays.asList("apple", "banana", "cherry");

list.stream()

.filter(s -> s.startsWith("b"))

.map(String::toUpperCase)

.forEach(System.out::println); // 输出 BANANA

}

}

相关推荐

316 不锈钢和 304 不锈钢的区别是什么
365根据什么来封号

316 不锈钢和 304 不锈钢的区别是什么

🗓️ 10-07 👁️ 7256
快手免流量怎么设置在哪里
最佳娱乐365bet娱乐场下载

快手免流量怎么设置在哪里

🗓️ 07-24 👁️ 5259
安全裤多长时间换新的
365bet真人体育

安全裤多长时间换新的

🗓️ 09-12 👁️ 2300
如何抖动胸肌?胸肌抖动原理—抖胸肌gif
最佳娱乐365bet娱乐场下载

如何抖动胸肌?胸肌抖动原理—抖胸肌gif

🗓️ 07-18 👁️ 9885
【有赞支付】网络虚拟服务交易手续费规则调整
365根据什么来封号

【有赞支付】网络虚拟服务交易手续费规则调整

🗓️ 07-31 👁️ 9889
植物大战僵尸2双头向日葵怎么获得 双头向日葵获得方法
最佳娱乐365bet娱乐场下载

植物大战僵尸2双头向日葵怎么获得 双头向日葵获得方法

🗓️ 06-27 👁️ 5220
手机拍照为什么是横着的照片
最佳娱乐365bet娱乐场下载

手机拍照为什么是横着的照片

🗓️ 08-17 👁️ 4526
《微信》群ID号查看方法
最佳娱乐365bet娱乐场下载

《微信》群ID号查看方法

🗓️ 09-15 👁️ 7390
【图】自然卷可以烫发吗 你需要了解这些
最佳娱乐365bet娱乐场下载

【图】自然卷可以烫发吗 你需要了解这些

🗓️ 08-13 👁️ 9243
王者荣耀王者水晶多少次能抽满 王者水晶抽满次数
最佳娱乐365bet娱乐场下载

王者荣耀王者水晶多少次能抽满 王者水晶抽满次数

🗓️ 07-10 👁️ 2249
鸭子表示什么生肖
365根据什么来封号

鸭子表示什么生肖

🗓️ 09-21 👁️ 4104
怎么把手机号码导入手机卡?超详细教程,爸妈也能轻松学会