You need to enable JavaScript to run this app. 如何将打印字符串长度的lambda表达式改为使用::操作符实现
优惠活动
大模型
产品
解决方案
定价
更多

如何将打印字符串长度的lambda表达式改为使用::操作符实现

Java lambda表达式转::方法引用实现打印字符串长度的方案

原代码逻辑

你提供的原始lambda写法功能为遍历字符串数组,逐个打印每个字符串的长度:

String[] arr = new String[]{"1", "234", "56"};
Arrays.stream(arr).forEach(s -> System.out.println(s.length()));

转换为::方法引用的实现方式

方法引用(::操作符)是lambda的语法糖,仅当lambda逻辑恰好对应单个已存在方法的调用时,可以直接替换。你提供的原始lambda包含「取字符串长度」「打印长度」两个连续方法调用,因此可以通过两种方式转换:

方案1:拆分两步操作(最常用,可读性最高)

把两个操作拆分到流的不同环节,分别使用方法引用:

  • 用String::length引用String类的实例方法length(),将字符串映射为对应长度
  • 用System.out::println引用PrintStream实例out的println方法,打印长度值
    完整代码如下:
String[] arr = new String[]{"1", "234", "56"};
Arrays.stream(arr)
      // 等价于.map(s -> s.length())
      .map(String::length)
      // 等价于.forEach(len -> System.out.println(len))
      .forEach(System.out::println);

方案2:自定义方法后引用

如果不想拆分流操作,也可以把打印字符串长度的逻辑封装成独立方法,再直接引用该方法:

  1. 先在当前类中定义接收字符串参数的打印方法:
private static void printStrLen(String s) {
    System.out.println(s.length());
}
  1. 调用时直接引用该静态方法,注意将示例中的YourClassName替换为实际的类名:
String[] arr = new String[]{"1", "234", "56"};
Arrays.stream(arr).forEach(YourClassName::printStrLen);

内容的提问来源于stack exchange,提问作者orubt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 09:21:02