一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

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
  • 适用于 forEachstream().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 更自然,但你也可以在传统 forfor-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!

适合将“处理逻辑”解耦,提升可读性和复用性。

热门栏目