[Java]ArrayList, HashSet, int数组, Integer数组之间的相互转换

本文介绍了如何使用Java的Stream流进行ArrayList、HashSet和int数组之间的高效转换。通过一行代码实现各种转换,包括ArrayList到int数组、Integer数组、HashSet的转换,以及HashSet到ArrayList和Integer数组的转换。文章指出,Java的类型转换相对繁琐,但Stream流提供了一种简洁的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        该文章整理了除单个循环赋值之外的其他方法完成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());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值