java数字转换成数组中_关于java:Java-数字类型集合转换成基本类型数组-如ListInteger转int...

如何把List转成数组?个别状况咱们能够应用汇合类提供的Collection.toArray()办法。

List integerList = Arrays.asList(1,3,2);

//办法一,强制转换

Integer[] integerAry = (Integer[]) integerList.toArray();

//办法二,传入一个指定类型对象

Integer[] integerAry2 = integerList.toArray(new Integer[0]);

那么将List转成int[]数组该如何解决呢?沿用以上办法的话:

int[] integerAry = (int[]) integerList.toArray();

//编译谬误: Inconvertible types; cannot cast 'java.lang.Object[]' to 'int[]'

int[] integerAry2 = integerList.toArray(new int[0]);

//编译谬误: no instance(s) of type variable(s) T exist so that int[] conforms to T[]

起因是,强制转换的泛型对象须要为援用类型,根本类型无奈进行转换。这条路行不通,那就循环遍历进行手动转换…

int[] integerAry = new int[integerList.size()];

for (int i = 0; i < integerList.size(); i++){

integerAry[i] = integerList.get(i);

}

尽管也能够实现到预期成果,但有点麻烦,有没有简略点的办法呢?JDK1.8引入了Stream流概念能够把List转换成stream流,调用mapToInt办法将Integer对象转换成int类型,再调用toArray办法转换成数组。

int[] integerAry = integerList.stream().mapToInt(Integer::intValue).toArray();

同样能够将其余汇合类型转换成stream流实现雷同的成果,比方将下面的List换成Set汇合,其实现代码是截然不同的。

Set integerSet = new HashSet<>(Arrays.asList(1,2,3,2));

int[] integerAry = integerSet.stream().mapToInt(Integer::intValue).toArray();

反过来,把数组转换List,同样可行。

Arrays.stream(new String[]{"Mai", "Jelly"}).collect(Collectors.toList());

//对于根本类型数组,须要调用boxed()办法先进行装箱(转换成援用类型),能力封装成汇合对象

Arrays.stream(new int[]{1, 3, 2}).boxed().collect(Collectors.toList());

stream流的呈现大大降低了一些罕用转换操作的代码量,其作用远不止此,与之搭配应用的还有Lambda表达式,有趣味能够深刻理解一下。

举荐学习文章:

深刻了解Java 8 Lambda(语言篇——lambda,办法援用,指标类型和默认办法)

深刻了解Java 8 Lambda(类库篇——Streams API,Collectors和并行)

你可能感兴趣的:(java数字转换成数组中)