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

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

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
除了使用HashSet,还有其他方法可以取两个int数组的交集和异或集。其中,最简单的方法是通过双重循环遍历两个数组,逐一比较每个元素是否相等。这种方法的时间复杂度为O(n^2),不如使用HashSet的O(n)快,但是它不需要额外的空间来存储Set对象,可以在空间有限的情况下使用。 对于两个int数组A和B的交集,我们可以使用如下代码: ```java int[] A = {1, 2, 3}; int[] B = {2, 3, 4}; List<Integer> intersectionList = new ArrayList<>(); for (int i = 0; i < A.length; i++) { for (int j = 0; j < B.length; j++) { if (A[i] == B[j]) { intersectionList.add(A[i]); break; } } } int[] intersection = intersectionList.stream().mapToInt(Integer::intValue).toArray(); ``` 对于两个int数组A和B的异或集,我们可以使用如下代码: ```java int[] A = {1, 2, 3}; int[] B = {2, 3, 4}; List<Integer> xorList = new ArrayList<>(); for (int i = 0; i < A.length; i++) { boolean found = false; for (int j = 0; j < B.length; j++) { if (A[i] == B[j]) { found = true; break; } } if (!found) { xorList.add(A[i]); } } for (int i = 0; i < B.length; i++) { boolean found = false; for (int j = 0; j < A.length; j++) { if (B[i] == A[j]) { found = true; break; } } if (!found) { xorList.add(B[i]); } } int[] xorSet = xorList.stream().mapToInt(Integer::intValue).toArray(); ``` 这段代码首先遍历数组A,对于数组A中的每个元素,如果它没有出现在数组B中,则将其添加到异或集中。接着遍历数组B,对于数组B中的每个元素,如果它没有出现在数组A中,则将其添加到异或集中。最后,将异或集转换int数组即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值