当前位置: 首页 > 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.lryc.cn/news/602766.html

相关文章:

  • 【docker】DM8达梦数据库的docker-compose以及一些启动踩坑
  • Thymeleaf th:object核心用法精解
  • LeetCode|Day28|67. 二进制求和|Python刷题笔记
  • OpenLayers 入门指南【四】:项目初始化
  • org.hibernate.hql.internal.ast.QuerySyntaxException: Invalid path
  • 下载k8s官方组件chart和容器镜像
  • 自动化测试常用函数
  • 网络编程概述与UDP编程
  • 关于前端的性能优化
  • 【数据架构09】人工智能及数据智能架构篇
  • pg数据库,本地服务器下不同端口迁移
  • 用了Flutter包体积增大就弃用Flutter吗?包体积与开发效率,这两者之间如何权衡?
  • 微信小程序点击输入框时,顶部导航栏被遮挡问题如何解决?
  • 鸿蒙打包签名
  • Linux驱动23 --- RkMedia 使用
  • gdb 基本命令
  • 3DGRUT: 革命性的3D高斯粒子光线追踪与混合光栅化技术深度解析
  • Error: Unable to find a match: python3.8
  • 【Linux操作系统】简学深悟启示录:Linux环境基础开发工具使用
  • Spring IOC与DI
  • 【服务器知识】nginx配置ipv6支持
  • JVM 内存共享区域详解
  • RabbitMQ概念与管理端配置说明
  • 学习游戏制作记录(改进剑投掷状态)7.28
  • 四、计算机组成原理——第7章:输入/输出系统
  • Unity_UI_NGUI_组合控件2
  • 数论1.01
  • socketpair函数详解
  • MCU+RTOS调试
  • STM32-基本定时器