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]
}
}
沒有留言:
張貼留言