java - 将整数数组转换为向量的最佳方法?在java中
问题描述
我有一个像
int [] nums={1,2,3,1,1,3};
所以我希望它把它转换成我尝试过的向量
Vector<Integer> num= new Vector<Integer>(Arrays.asList(nums));
并得到了这个错误
java: method addAll in class java.util.Collections cannot be applied to given types;
required: java.util.Collection<? super T>,T[]
found: java.util.Vector<java.lang.Integer>,int[]
reason: inference variable T has incompatible bounds
有没有办法改变类型或比这更快的方法?
解决方案
注意:在我回答问题之前,Vector 已被弃用,永远不应使用。你正在寻找List
. 无论 Vector 有什么属性让你认为你需要它,我真的怀疑它。
这里的问题是List
(and Vector
) 是泛型的,泛型不能是原始类型。所以,int[]
andInteger[]
不是一回事,出于同样的原因,你不能随便把 anint[]
变成List<Integer>
. 相反,Arrays.asList(someIntArray)
它会为您提供一个列表,其中只有一个元素,并且该列表是类型List<int[]>
- 换句话说,nums
被视为 int 数组列表的单个元素。
库中没有java.*
将 anint[]
转换为 a List<Integer>
(或Vector<Integer>
,自然而然)的方法。
一种简单的方法:
List<Integer> list = Arrays.stream(nums).mapToObj(x -> x).toList();
这将首先创建您的号码的 IntStream。然后它将值映射int
到Integer
值,使用自动加糖的身份操作x -> Integer.valueOf(x)
(如果您发现它更具可读性,那么继续像这样编写它),然后将整个事情变成一个列表。如果toList()
不起作用-您使用的是 java pre-16,请编写.collect(Collectors.toList())
而不是.toList()
.
如果您不喜欢上述内容,那么一个简单的 for 循环就可以完成这项工作。这同样有效:
List<Integer> list = new ArrayList<Integer>();
for (int n : nums) list.add(n);
推荐阅读
- node.js - 如何在 Mongoose 中获得点赞数
- python-3.8 - Python中的循环和列表
- javascript - 如何动态设置以编程方式生成的 SVG 样式?
- php - 为什么一个函数返回一个数组而另一个函数返回 Laravel 中的对象
- java - 当试图创建一个新的 com. 假设。.pdf 文档(contentFilePath),加盖的 pdf 崩溃并出现异常
- google-apps-script - 从多个选项卡到 VLOOKUP 汇总列的脚本 从每个选项卡中提取数据 wrt 值
- spring - 是否可以将最后一个元素与 JPA 和 Spring boot 分组
- typescript - RXJS:在继续之前获取可观察的结果
- elasticsearch - Vega-Lite / Kibana 管理 URL 对象的区别
- game-development - 应用发明者:只要按下按钮,如何移动精灵?