首页 > 解决方案 > 在 Java 中将列表转换为数组

问题描述

我是 Long 类型的 List,想将其转换为 long 类型的数组。

但是,当向列表中添加元素时,它说找不到方法“add(int)”

我的代码如下所示

package collections;

import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;

public class ListToArray {

    private static List<Long> list;

    public static void main(String[] args){

        list=new ArrayList<Long>();
        list.add(121145788);
        list.add(1245898);

        long[] arr=new long[list.size()];

        arr=list.toArray();

    }
}

我得到的错误是

错误(16,13):找不到方法 add(int)。错误(21,25):不兼容的类型

有人可以指出哪里出错了。

标签: java

解决方案


正如评论中所建议的,您应该添加L以强制值为 a long

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

解释:

您要添加的值是ints,并且list是用于longs。添加L会使编译器显式使用数字文字作为类型的值,并且可以将其添加到列表中。Long

没有它,数字将被视为Integers,并且不能添加到 type 列表中Long,因此

cannot find method add(int)

有一个方法add(long),就是用的时候用的那个L

要转换为数组,您需要以老式方式进行:

for (int i = 0; i < arr.length; i++) {
    arr[i]=list.get(i);
}

这是因为long它是一个原始类型,并且Long是一个引用类型(即它是一个Object)。从基元转换为对象并不总是那么容易。在这种情况下,老式的方法效果很好。


推荐阅读