最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Java 中 Consumer 函数式接口在循环中如何处理数据
时间:2026-07-10 10:23:51 编辑:袖梨 来源:一聚教程网
Consumer接口用于对每个元素执行无返回值的操作,如打印或修改,通过accept(T t)方法实现,支持lambda、方法引用,在forEach中简洁使用,并可通过andThen组合多个操作。
Java 中 Consumer 接口常用于在循环中对每个元素执行“消费”操作(比如打印、修改、保存),它不返回结果,只接收一个参数并处理它。
Consumer 的基本用法
Consumer<t></t> 是一个函数式接口,定义了 void accept(T t) 方法。你可以用 lambda 表达式、方法引用或匿名内部类来实现它。
- lambda 写法:
t -> System.out.println(t) - 方法引用:
System.out::println - 适用于
forEach、stream().forEach()等场景
在 for-each 循环中直接使用 Consumer
你可以把 Consumer 当作“行为模板”,传给集合的 forEach 方法,比传统 for 循环更简洁:
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");names.forEach(name -> System.out.println("Hello: " + name));// 或者Consumer<String> printer = name -> System.out.println("Hello: " + name);names.forEach(printer);
在普通 for 循环中调用 Consumer
虽然 forEach 更自然,但你也可以在传统 for 或 for-i 循环里手动调用 accept():
立即学习“Java免费学习笔记(深入)”;
Consumer<Integer> logger = x -> System.out.println("Processing: " + x);List<Integer> numbers = Arrays.asList(1, 2, 3);for (int i = 0; i < numbers.size(); i++) { logger.accept(numbers.get(i)); // 显式调用}
注意:这种方式不如 forEach 直观,一般只在需要索引或复杂控制逻辑时才这么用。
组合多个 Consumer 处理同一数据
Consumer 支持链式调用,用 andThen() 可以顺序执行多个操作:
Consumer<String> toUpperCase = s -> System.out.print(s.toUpperCase());Consumer<String> addExclamation = s -> System.out.println("!");List<String> words = Arrays.asList("hello", "world");words.forEach(toUpperCase.andThen(addExclamation));// 输出:HELLO! WORLD!
适合将“处理逻辑”解耦,提升可读性和复用性。
相关文章
- 影棚电影级时尚肖像 07-21
- 未来感奢华超跑生活形态 07-21
- 发布仅三天就踩下刹车:Kimi K3 用户请求爆表 月之暗面算力顶到天花板 07-21
- 《风启之旅》更改难度机制介绍 07-21
- 红熊AI完成数亿元A+轮融资:基于AI记忆科学从To B服务延伸至To C应用|36氪首发 07-21
- 阿里云百炼推出HappyOyster1.0:实时交互开放世界模型启动灰测 07-21