当前位置: 首页 > news >正文

Java集合遍历的几种方式

迭代器
  • 不依赖索引

  • 遍历完毕后,指针不会复位.

  • 遍历时,不能使用集合的方法进行增加或删除.

  • 只能使用一次next()方法.

主要方法
public interface Iterator<E> {Iterator<E> iterator();//返回迭代器对象,默认指向当前集合的0索引boolean hasNext();   // 用于判断集合中是否还有下一个元素,有的话返回trueE next();            // 返回迭代器的下一个元素,并将迭代器的指针移到下一个位置。void remove();       // 从集合中移除当前元素
}
使用
import java.util.ArrayList;
import java.util.Iterator;public class IteratorExample {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Cherry");Iterator<String> iterator = list.iterator(); // 获取迭代器// 遍历while (iterator.hasNext()) {String fruit = iterator.next();System.out.println(fruit);}}
}

remove() : 用于移除集合中的元素, 注意必须在调用 next() 之后使用。

ArrayList<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Cherry");Iterator<String> iterator = list.iterator();while (iterator.hasNext()) {String fruit = iterator.next();if (fruit.equals("Banana")) {//list.remove(); //不能使用集合的方法来移除或添加元素iterator.remove(); // 移除当前元素}}System.out.println(list); 
增强for循环(foreach)

用于遍历单列集合、数组或任何可迭代对象.

for (ElementType element : collection) {// 处理 element
}

遍历数组:

public class Main {public static void main(String[] args) {String[] fruits = {"Apple", "Banana", "Cherry"};for (String fruit : fruits) {System.out.println(fruit);}}
}

遍历 ArrayList:

import java.util.ArrayList;public class Main {public static void main(String[] args) {ArrayList<String> fruits = new ArrayList<>();fruits.add("Apple");fruits.add("Banana");fruits.add("Cherry");for (String fruit : fruits) {System.out.println(fruit);}}
}

遍历集合(HashSet):

import java.util.HashSet;public class Main {public static void main(String[] args) {HashSet<String> fruits = new HashSet<>();fruits.add("Apple");fruits.add("Banana");fruits.add("Cherry");for (String fruit : fruits) {System.out.println(fruit);}}
}

注意:

  • 增强 for 循环不能用于遍历 Map,因为 Map 不支持索引.遍历 Map需要使用 entrySet()keySet()values() 方法。

遍历 Map:

package JavaProjets;  import java.util.Map;  
import java.util.HashMap;  public class Main {  public static void main(String[] args) {  Map<String, Integer> map = new HashMap<>();  map.put("Apple", 1);  map.put("Banana", 2);  map.put("Orange", 3);  for (Map.Entry<String, Integer> e : map.entrySet()) {  System.out.println(e.getKey() + " " + e.getValue());  }  
}}
  • 修改增强for中的变量,不会影响集合原来的元素
forEach()方法
集合.forEach(元素 -> {// 处理逻辑
});
Lambda表达式遍历
遍历 List
import java.util.ArrayList;
import java.util.List;public class LambdaExample {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Cherry");// 使用 Lambda 表达式遍历list.forEach(item -> System.out.println(item));}
}
遍历 Map

Map 是双列集合,通过 entrySet() 方法获取键值对

        Map<String, Integer> map = new HashMap<>();map.put("Apple", 3);map.put("Banana", 5);map.put("Cherry", 2);// 使用 Lambda 表达式遍历键值对map.forEach((key, value) -> System.out.println("Key: " + key + ", Value: " + value));
结合Stream流

Lambda 可以结合 Stream 流 实现过滤和遍历操作

        List<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Cherry");// 过滤出以 A 开头的元素并遍历list.stream().filter(item -> item.startsWith("A")).forEach(item -> System.out.println(item));}
http://www.dtcms.com/a/302370.html

相关文章:

  • 1.DRF 环境安装与配置
  • 基于springboot的编程训练系统设计与实现(源码+论文)
  • EMQX Webhook 调用本地 Supabase Edge Functions
  • 3.DRF视图和路由
  • JAVA后端开发——“全量同步”和“增量同步”
  • [AI Coding] 一.腾讯CodeBuddy IDE内测、安装及基本用法(国产AI IDE启航)
  • 使用node-cron实现Node.js定时任务
  • Office-PowerPoint-MCP-Server – 基于MCP的开源PPT生成与编辑工具
  • 每日面试题16:什么是双亲委派模型
  • DBSyncer:开源免费的全能数据同步工具,多数据源无缝支持!
  • 代码随想录day48单调栈1
  • Python全栈项目--基于深度学习的视频内容分析系统
  • html转word下载
  • 【GitHub Workflows 基础(二)】深入理解 on、jobs、steps 的核心语法与执行逻辑
  • Dify快速搭建问答系统
  • 3、CC3200串口DMA
  • Binary Classifier Optimization for Large Language Model Alignment
  • 亚远景-“过度保守”还是“激进创新”?ISO/PAS 8800的99.9%安全阈值之争
  • Windows 11 系统 Docker详细安装教程并集成使用 Redis 官方详细教程
  • uniapp,uview icon加载太慢了,老是显示叉叉,将远程加载改到本地加载。
  • LangGraph实战:整合MCP(本地模式
  • 机器学习sklearn:不纯度与决策树构建
  • 数据中心入门学习(四):服务器概述与PCIe总线
  • 【学习笔记】AD7708/18(1)-理解官网的参考代码
  • python每日一题
  • 如何在 Apache Ignite 中创建和使用自定义 SQL 函数(Custom SQL Functions)
  • 生物信息学数据技能-学习系列001
  • 牛客网之华为机试题:坐标移动
  • 利用径向条形图探索华盛顿的徒步旅行
  • 数据分析干货| 衡石科技可视化创作之仪表盘控件如何设置