Java迭代器和lambda的区别,Java使用Lambda表达式遍历Iterator迭代器

Java使用Lambda表达式遍历Iterator迭代器

Java 8 为 Iterator 引入了一个 forEachRemaining(Consumer action) 默认方法,该方法所需的 Consumer 参数同样也是函数式接口。当程序调用 Iterator 的 forEachRemaining(Consumer action) 遍历集合元素时,程序会依次将集合元素传给 Consumer 的 accept(T t) 方法该接口中唯一的抽象方法)。

java.util.function 中的 Function、Supplier、Consumer、Predicate 和其他函数式接口被广泛用在支持 Lambda 表达式的 API 中。

“void accept(T t);”是 Consumer 的核心方法,用来对给定的参数 T 执行定义操作。

如下程序示范了使用 Lambda 表达式来遍历集合元素。

import java.util.Collection;

import java.util.HashSet;

import java.util.Iterator;

public class IteratorEach {

public static void main(String[] args) {

// 创建一个集合

Collection objs = new HashSet();

objs.add("xinbiancheng.cn Java教程");

objs.add("xinbiancheng.cn Python教程");

objs.add("xinbiancheng.cn js教程");

// 获取objs集合对应的迭代器

Iterator it = objs.iterator();

// 使用Lambda表达式(目标类型是Comsumer)来遍历集合元素

it.forEachRemaining(obj -> System.out.println("迭代集合元素:" + obj));

}

}

输出结果为:

迭代集合元素:xinbiancheng.cn Java教程

迭代集合元素:xinbiancheng.cn Python教程

迭代集合元素:xinbiancheng.cn js教程

上面程序中第 15 行代码调用了 Iterator 的 forEachRemaining() 方法来遍历集合元素,传给该方法的参数是一个 Lambda 表达式,该 Lambda 表达式的目标类型是 Consumer,因此上面代码也可用于遍历集合元

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Java代码实现: ```java import java.util.HashSet; import java.util.Iterator; public class Student { private String id; private String name; public Student(String id, String name) { this.id = id; this.name = name; } public String getId() { return id; } public String getName() { return name; } public static void main(String[] args) { HashSet<Student> students = new HashSet<>(); students.add(new Student("001", "Tom")); students.add(new Student("002", "Jerry")); students.add(new Student("003", "Lucy")); students.add(new Student("004", "Amy")); // 使用 Iterator<Student> iterator = students.iterator(); while (iterator.hasNext()) { Student student = iterator.next(); System.out.println(student.getId() + " " + student.getName()); } // 使用Lambda表达式 students.forEach(student -> System.out.println(student.getId() + " " + student.getName())); // 根据指定学号删除学生对象 String idToRemove = "002"; students.removeIf(student -> student.getId().equals(idToRemove)); } } ``` 其中,使用的代码为: ```java Iterator<Student> iterator = students.iterator(); while (iterator.hasNext()) { Student student = iterator.next(); System.out.println(student.getId() + " " + student.getName()); } ``` 使用Lambda表达式的代码为: ```java students.forEach(student -> System.out.println(student.getId() + " " + student.getName())); ``` 根据指定学号删除学生对象的代码为: ```java String idToRemove = "002"; students.removeIf(student -> student.getId().equals(idToRemove)); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值