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

如何使用Java Stream从二维字符串列表中找出最大元素

使用Java Stream获取二维String列表中的最大整数元素

要从存储字符串类型数字的二维列表中找出最大整数,可通过Java Stream的扁平化、类型转换和最大值查找三步完成,具体实现如下:

核心实现步骤

  • 扁平化二维列表:通过flatMap将嵌套的子列表展开为单一元素流,把List<List<String>>转换为Stream<String>。
  • 字符串转整数:使用mapToInt(Integer::parseInt)或map(Integer::valueOf)将字符串转换为整数类型的流。
  • 查找最大值:调用流的max()方法获取最大值,该方法返回Optional类型,需处理列表为空的边界情况。

完整代码示例

import java.util.Arrays;
import java.util.List;
import java.util.OptionalInt;

public class MaxElementFinder {
    private static final List<List<String>> myList = Arrays.asList(
        Arrays.asList("1", "3", "99", "2", "14", "2"),
        Arrays.asList("111", "7", "199", "92", "14", "20"),
        Arrays.asList("10", "31", "9", "21", "243", "432"),
        Arrays.asList("31", "13", "999", "5", "41", "222"),
        Arrays.asList("10", "31", "401", "42", "11", "77")
    );

    public static void main(String[] args) {
        // 方式1:返回OptionalInt,安全处理空列表
        OptionalInt maxOptional = myList.stream()
                .flatMap(List::stream)
                .mapToInt(Integer::parseInt)
                .max();

        if (maxOptional.isPresent()) {
            int maxValue = maxOptional.getAsInt();
            System.out.println("最大值:" + maxValue); // 输出999
        } else {
            System.out.println("列表为空,无有效最大值");
        }

        // 方式2:返回Integer类型,指定空列表默认值
        Integer maxInteger = myList.stream()
                .flatMap(List::stream)
                .map(Integer::valueOf)
                .max(Integer::compareTo)
                .orElse(-1); // 空列表时返回-1,可按需修改

        System.out.println("最大值(Integer类型):" + maxInteger);
    }
}

异常处理扩展

如果列表中存在无法转换为整数的字符串,可通过filter过滤无效元素,避免抛出NumberFormatException:

OptionalInt maxWithFilter = myList.stream()
        .flatMap(List::stream)
        .filter(s -> {
            try {
                Integer.parseInt(s);
                return true;
            } catch (NumberFormatException e) {
                return false;
            }
        })
        .mapToInt(Integer::parseInt)
        .max();

内容的提问来源于stack exchange,提问作者ABHINAV.DEEP

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:15:39