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

如何通过Java 8 Stream将List<Object[]>转换为List<Integer>

List<Object[]>转List的ClassCastException原因及解决方法

异常原因

你遇到的ClassCastException是因为在Stream操作中错误地将Object[]类型的元素直接强转为Integer了。你的原始集合是List<Object[]>,每个元素都是对象数组,而非单个Integer。如果代码里写了类似map(item -> (Integer) item)的逻辑,JVM会尝试把Object[]实例转成Integer——这两种类型完全不兼容,自然抛出类型转换异常。

正确实现

假设你的每个Object[]数组中存储的第一个元素就是目标Integer(这是这类场景的常见情况),正确的做法是先从数组中取出对应位置的元素,再强转为Integer:

import java.util.List;
import java.util.stream.Collectors;

// 示例代码
List<Object[]> resultSet = ...; // 你的原始结果集
List<Integer> integerList = resultSet.stream()
    // 取出数组第一个元素并强转为Integer,可根据实际情况调整数组索引
    .map(objectArray -> (Integer) objectArray[0])
    .collect(Collectors.toList());

如果需要更健壮的处理(比如数组可能为null、数组为空、元素类型不是Integer),可以添加过滤逻辑避免异常:

List<Integer> integerList = resultSet.stream()
    // 过滤掉null数组、空数组,以及第一个元素不是Integer的情况
    .filter(arr -> arr != null && arr.length > 0 && arr[0] instanceof Integer)
    .map(arr -> (Integer) arr[0])
    .collect(Collectors.toList());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:12:03