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

Java中Long类型List转long数组及add方法报错问题

解决List转long[]及add方法报错的问题

先搞定add(int)找不到方法的坑

你定义的是List<Long>泛型集合,它只能接受Long类型的元素。你传入的121145788是int字面量,Java会自动把它装箱成Integer,但Integer和Long是完全不同的包装类型,编译器自然找不到匹配的add方法。

解决起来超简单,给数字加上L后缀,让它变成Long类型的字面量就行:

list.add(121145788L);
list.add(1245898L);

要是你习惯显式装箱,也可以这么写:

list.add(Long.valueOf(121145788));

再处理List转long[]数组的需求

Java标准库没有直接提供这个转换的工具方法,但有两种常用的实现方式:

方式1:Java 8+用Stream API(最简洁)

借助Stream的映射和转换能力,一行代码就能搞定:

long[] arr = list.stream()
                 .mapToLong(Long::longValue)
                 .toArray();

原理是先把List转成流,再把每个Long对象拆箱成long基本类型,最后生成对应的数组。

方式2:手动遍历(兼容Java 8之前的版本)

如果你的项目还在使用老版本Java,手动遍历也很直观:

long[] arr = new long[list.size()];
for (int i = 0; i < list.size(); i++) {
    arr[i] = list.get(i); // Long会自动拆箱成long
}

修正后的完整代码

package collections; 
import java.util.ArrayList; 
import java.util.List; 

public class ListToArray { 
    private static List<Long> list; 

    public static void main(String[] args){ 
        list = new ArrayList<Long>(); 
        list.add(121145788L); // 加上L后缀指定Long类型
        list.add(1245898L); 

        // 用Stream转数组的写法
        long[] arr = list.stream()
                         .mapToLong(Long::longValue)
                         .toArray();

        // 或者手动遍历的写法(注释掉上面的Stream代码后启用)
        // long[] arr = new long[list.size()];
        // for (int i = 0; i < list.size(); i++) {
        //     arr[i] = list.get(i);
        // }
    } 
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:27:07