该文章整理了除单个循环赋值之外的其他方法完成ArrayList, HashSet, int数组, Integer数组之间的相互转换,整理了一些只需要一行就可以完成的方法,主要是通过stream流进行处理:
python写多了,感觉java的强制类型转换真的很麻烦,在此记录一下:
1. ArrayList(以List为ArrayList类的一个对象)
ArrayList转int数组(流处理):
List.stream().mapToInt(Integer::intValue).toArray();
ArrayList转Integer数组(直接调用库函数):
Integer[] arr = new Integer[list.size()];
list.toArray(arr);//arr为相应的Integer数组
ArrayList转HashSet(流处理):
(HashMap<Integer>)List.stream().collect(Collectors.toSet());
2. HashSet(以set为HashSet类的一个对象)
HashSet转int数组(流处理):
set.stream().mapToInt(x -> x).toArray();
HashSet转Integer数组(这个是真没找到合适的方法):
这个真的没有找到合适的方法一步完成,其中HashSet的toArray方法由于得到的是Object数组,而Object数组不能直接强转为Integer数组,所以可以考虑先得到HashSet数组,然后借助循环一个一个进行强制类型转换,同时,很少有情况需要将HashSet直接转为Integer吧。
Object[] ins = set.toArray();
Integer[] i = new Integer[ins.length];
for(int k=0;k<ins.length;k++){
i[k] = Integer.parseInt(ins[k].toString());
}
HashSet转ArrayList:
(ArrayList<Integer>)set.stream().collect(Collectors.toList());
3. int[](以arr为int数组对象)
Int数组转ArryList:(流处理):
(ArrayList<Integer>) Arrays.stream(arr).boxed().collect(Collectors.toList());
Int数组转Integer数组:(流处理):
Arrays.stream(arr).boxed().toArray(Integer[]::new);
Int数组转HashSet:(流处理):
(HashSet<Integer>) Arrays.stream(arr).boxed().collect(Collectors.toSet());
4. Integer[](以integers为Integer数组对象)
Integer数组转ArryList:(流处理):
(ArrayList<Integer>) Arrays.stream(integers).collect(Collectors.toList());
Integer数组转int数组:(流处理):
Arrays.stream(integers).mapToInt(Integer::valueOf).toArray();
Integer数组转HashSet:(流处理):
(ArrayList<Integer>) Arrays.stream(integers).collect(Collectors.toSet());