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