Sev*_*yev 7 java collections android boxing
在Android Java世界中,是否有一种直接(理想情况下是一次调用)方式将数组转换int
为a ArrayList<Integer>
和back?调用toArray()
ArrayList返回一个数组Integer
- 不是我想要的.
我可以通过循环手动轻松完成(事实上已经做过).我想知道库/语言是否支持相同.
编辑:谢谢大家,我已经写了自己的拳击手和unboxer.我很惊讶语言/ RTL设计师自己没有想到它,特别是原始类型的设计不符合集合.
Col*_*inD 11
使用Guava(Ints.asList(int ...)和Ints.toArray(Collection <Integer>)):
int[] intArray = ...
List<Integer> intArrayAsList = Ints.asList(intArray);
int[] intArray2 = Ints.toArray(intArrayAsList);
Run Code Online (Sandbox Code Playgroud)
请注意Arrays.asList
,Ints.asList
返回一个列表,该列表是给定数组的视图.您无法添加或删除它,但您可以set
使用特定索引处的值.ArrayList
如果您愿意,也可以将其复制到新的:
List<Integer> arrayList = Lists.newArrayList(Ints.asList(intArray));
Run Code Online (Sandbox Code Playgroud)
Guava对所有原始类型都有相同的方法.
装箱和拆箱(无特殊库):
// Necessary Imports:
import java.util.*;
import java.util.stream.*;
// Integers:
int[] primitives = {1, 2, 3};
Integer[] boxed = Arrays.stream(primitives).boxed().toArray(Integer[]::new);
int[] unboxed = Arrays.stream(boxed).mapToInt(Integer::intValue).toArray();
// Doubles:
double[] primitives = {1.0, 2.0, 3.0};
Double[] boxed = Arrays.stream(primitives).boxed().toArray(Double[]::new);
double[] unboxed = Arrays.stream(boxed).mapToDouble(Double::doubleValue).toArray();
Run Code Online (Sandbox Code Playgroud)
请注意,这需要Java 8(流文档)。
对于不知道这::
意味着什么的任何人,它用于制作Method Reference。
归档时间: |
|
查看次数: |
4285 次 |
最近记录: |