網頁

2020/5/9

Java 轉原始型別陣列為包裝型別List convert primitive type array to boxed type List

Java 轉換原始型別陣列(primitive array)為List的方法如下。

由於List<E>的元素必須是物件,不能是原始型別,因此要先把原始型別轉變為對應的包裹類別(wrapper class)才能放入List中。

Java 8提供Arrays.stream()可將原始型別陣列轉為Stream再用boxed()轉為包裹類別。

或使用Guava的原始型別工具如Ints.asList()Longs.asList()

或使用Apache Commons Lang3的ArrayUtils.toObject()轉為包裹類別後再用Arrays.aslist()轉為List

import com.google.common.primitives.Ints;
import org.apache.commons.lang3.ArrayUtils;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Main {

    public static void main(String[] args) {
        int[] ints = {1, 2, 3};
        
        List<Integer> intList = new ArrayList<>(ints.length);
        for (int i : ints) {
            intList.add(i);
        }
        System.out.println(intList); // [1, 2, 3]


        // Java 8 Stream
        intList = Arrays.stream(ints).boxed().collect(Collectors.toList());
        System.out.println(intList); // [1, 2, 3]


        intList = IntStream.of(ints).boxed().collect(Collectors.toList());
        System.out.println(intList); // [1, 2, 3]


        // Guava
        intList = Ints.asList(ints); // [1, 2, 3]
        System.out.println(intList); // [1, 2, 3]


        // Apache Commons Lang3
        Integer[] integers = ArrayUtils.toObject(ints);
        intList = Arrays.asList(ArrayUtils.toObject(ints));
        System.out.println(intList); // [1, 2, 3]

    }
}

沒有留言:

張貼留言