目标 list -> array[ ]
网上好多都是 String[] array=list.toArray(new String[list.size()]); 但是同样的方法得不到 int[] 类型的array[],后面会解释,先看答案
方法一:list.stream().mapToInt(Integer :: intValue).toArray()
public int[] returnArray(){
List<Integer> list = new ArrayList<Integer>();
list.add(0);
return list.stream().mapToInt(Integer :: intValue).toArray();
}
- 解释:
- 将列表转换成Stream对象,调用Stream方法mapToInt() 将每个元素转换成整数类型
- Integer :: intValue Java8 中的引用语法,表示对每个Integer对象调用它的intValue方法转换成int类型
- 其次使用Stream中的toArray方法将流中的每个元素收集到 int[ ] 中
- 将列表转换成Stream对象,调用Stream方法mapToInt() 将每个元素转换成整数类型
方法二:建立数组,循环读取赋值
public int[] returnArray(){
List<Integer> list = new ArrayList<Integer>();
list.add(0);
int[] array = new int[list.size()];
for(int i = 0; i < list.size(); ++i){
array[i] = list.get(i);
}
return array;
}
网上博客返回String[ ] 类似类型的解释不清楚的地方以及方法对比
List<String> list = new ArrayList<String>();
String[] ss = list.toArray(new String[list.size()]);
-
list.toArray() 方法传入参数应该是对象类型 但是int[] 不是对象类型
- 比如 int[ ] array = list.toArray(new int[ list.size()]); 会编译错误
-
方法一 可读性好,比起方法二需要额外创建一个“IntStream”,总体上方法一二时间差距非常小
-
方法二可读性比较差,容易出现错误
-
建议方法一,代码可读性在函数执行频率高,list长度短时可以选用方法二