> 文章列表 > Java:List,array转换,return int[ ]时

Java:List,array转换,return int[ ]时

Java:List,array转换,return int[ ]时

目标 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[ ] 中

方法二:建立数组,循环读取赋值

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长度短时可以选用方法二

包装材料