数组之间的转化

//int[] 转Integer[]
Integer[] integers = Arrays.stream(nums1).boxed().toArray(Integer[]::new);


/**
 * int[] 转List<Integer> 去重
 * 遇到的问题:直接使用new HashSet<>(Arrays.asList(int[]))去重
 * 而int[]和Integer[]之间还有一层转换,所以去重失败
 * 通过debug模式查看,发现他会将int[]当成是一个object整体,存放到Set中
 */
List<Integer> list = Arrays.asList(integers);
Set<Integer> set = new HashSet(list);


/**
 * List<Integer>转int[]
 * 注意:转化的过程中,转换的基本数据类型要与引用数据类型保持一致
 */
int[] ints = list.stream().mapToInt(Integer::valueOf).toArray();

/**
 * List<Integer>转Integer[]
 */
Integer[] integers1 = list.stream().mapToInt(Integer::valueOf).boxed().toArray(Integer[]::new);

/**
* int[] 转List<Integer> 去重排序,lambda表达式
*/
 List<Integer> collect = Arrays.stream(ints)
             .boxed()            //将数值流转化为 Stream 非特化流
             .sorted()           //排序
             .distinct()         //去重
             .collect(Collectors.toList());
posted @ 2018-12-19 14:10  lisongyu  阅读(362)  评论(0编辑  收藏  举报