您的位置:

Java中如何将int数组转换为List?

一、使用普通的for循环进行转换

public List convert(int[] arr) {
    List
    list = new ArrayList<>();
    for(int i = 0; i < arr.length; i++) {
        list.add(arr[i]);
    }
    return list;
}

   
  

上述代码中,我们使用普通的for循环进行数组元素的遍历,并通过add()方法将每个元素加入到List中,最终返回List。这种方式的好处是代码简洁易懂,易于理解。

缺点是需要手动编写循环逻辑,代码量相对较大,容易出错。如果数组长度较大,时间复杂度也较高。

二、使用增强for循环进行转换

public List convert(int[] arr) {
    List
    list = new ArrayList<>();
    for(int num: arr) {
        list.add(num);
    }
    return list;
}

   
  

上述代码使用增强for循环遍历整个数组,代码相对简洁,容易理解。

缺点是没法对循环进行控制,无法实现跳过和退出功能。如果需要对数组的元素做特定的操作,只能使用普通的for循环。

三、使用Java 8的Stream进行转换

public List convert(int[] arr) {
    return Arrays.stream(arr)
            .boxed()
            .collect(Collectors.toList());
}

  

上述代码使用Java 8的Stream进行数组转换,代码清晰简洁。

缺点是需要掌握Java 8的Stream编程,并且在数组长度较大的情况下,Stream的性能不如for循环。

四、使用Java 8的Arrays.asList()方法

public List convert(int[] arr) {
    List
    list = new ArrayList<>(arr.length);
    for(Integer num: Arrays.asList(arr)) {
        list.add(num);
    }
    return list;
}

   
  

上述代码使用Arrays类中的asList()方法将int数组转换成List类型,然后遍历该List类型的数据。

缺点是在运行时会抛出UnsupportedOperationException异常,因为asList()方法返回的是Arrays类中的静态内部类ArrayList,并非java.util.ArrayList,其内部实现并没有重写add()和remove()等方法。

五、使用Java 8的IntStream将int数组转为List

public List convert(int[] arr) {
    return IntStream.of(arr)
            .boxed()
            .collect(Collectors.toList());
}

  

上述代码利用Java 8 的IntStream将int数组转换成List类型。

缺点在于,由于该方法使用了Java 8的IntStream,不适用于Java 7及以下版本,也不适合转换长数组。

六、使用Google Guava库将int数组转为List

public List convert(int[] arr) {
    return Ints.asList(arr);
}

  

上述代码引入Google Guava库对int数组进行List转换,代码简洁优美。

缺点是需要引入第三方库,编号冗余。如果程序本身并未引入Guava库,就需要新增库的引用。