You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写更简洁的Java代码获取字符串中最长偶长单词的长度?

优化Java代码:获取字符串中偶长单词的最长长度

需求回顾

编写程序返回给定字符串中长度为偶数的单词的最长长度。

原代码

用户提供的实现代码如下:

Optional<Integer> opInt = Arrays.asList(s.split("\\s")).stream()
  .map(l -> l.length())
  .filter(l -> l % 2 == 0)
  .sorted(Comparator.reverseOrder())
  .findFirst();
System.out.println(opInt.get());

更简洁高效的优化版本

可以通过以下方式简化代码,同时提升性能:

int maxEvenLen = Stream.of(s.split("\\s"))
    .mapToInt(String::length)
    .filter(len -> len % 2 == 0)
    .max()
    .orElse(0); // 无符合条件的单词时返回0,也可改用orElseThrow()抛出异常
System.out.println(maxEvenLen);

优化点说明

  • 直接用Stream.of(s.split("\\s"))替代Arrays.asList(s.split("\\s")).stream(),省去List转换步骤,代码更紧凑
  • 改用mapToInt(String::length)生成IntStream,避免自动装箱/拆箱的开销,同时方法引用让代码更简洁
  • 用max()替代sorted(Comparator.reverseOrder()).findFirst():排序的时间复杂度是O(n log n),而max()只需一次遍历(O(n)),逻辑更直接且性能更优
  • 用orElse()/orElseThrow()安全处理无符合条件单词的场景,避免原代码中get()可能抛出的NoSuchElementException

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 18:22:08