java - 在 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):不兼容的类型
有人可以指出哪里出错了。
解决方案
正如评论中所建议的,您应该添加L
以强制值为 a long
:
list.add(121145788L);
list.add(1245898L);
解释:
您要添加的值是int
s,并且list
是用于long
s。添加L
会使编译器显式使用数字文字作为类型的值,并且可以将其添加到列表中。L
ong
没有它,数字将被视为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
)。从基元转换为对象并不总是那么容易。在这种情况下,老式的方法效果很好。
推荐阅读
- python - 安装 sklearn_pandas 包的问题
- javascript - 如何在 JS 中使用游标调整表格大小并追加行或列?
- git - Git - 一个存储库中的多个项目。一种只克隆一个的方法
- deep-learning - 如何用 6 通道输入图像训练 FCN 网络?
- docker - 无法访问 Docker 容器中 VirtualBox VM 上托管的 ASP.NET Core 网站
- c++ - C ++如何为向量的向量构建迭代器
- javascript - 如何将下一个兄弟移动到 CSS Grid 中的下一行?
- c# - 如何在 EF 中执行 CRUD 操作
- java - 在 android studio 上的 cardview 上面对 Java.lang.NullPointerEXception
- php - 允许经过身份验证的用户平等地访问 laravel 5.8 默认登录页面