📅  最后修改于: 2023-12-03 15:16:36.521000             🧑  作者: Mango
Doubles.asList()
方法Java中的Doubles.asList(double... a)
方法是将数组转换成List的静态方法,其中参数a
为原始double型数组。
public static List<Double> asList(double... a) {
return new DoubleArrayAsList(a);
}
Doubles.asList(double... a)
方法使用数组a
中的元素创建一个DoubleArrayList
对象,并返回包含此列表的不可变视图(immutable view)的List<Double>
,因此对返回的List
进行修改会抛出UnsupportedOperationException
。这种方法的主要优点是可以使用List
对象的方法进行数组的操作,而无需创建单独的数组对象。
下面是使用Doubles.asList()
方法将数组转换成List<>
的示例代码:
double[] numbers = {1.0, 2.0, 3.0, 4.0, 5.0};
List<Double> numberList = Doubles.asList(numbers);
System.out.println("Original Array: " + Arrays.toString(numbers));
System.out.println("Number List: " + numberList);
该代码将输出以下结果:
Original Array: [1.0, 2.0, 3.0, 4.0, 5.0]
Number List: [1.0, 2.0, 3.0, 4.0, 5.0]
请注意,Doubles.asList()
方法返回的List
是不可变的,因此对其进行修改将抛出UnsupportedOperationException
。以下是试图修改返回的List
的代码:
double[] numbers = {1.0, 2.0, 3.0, 4.0, 5.0};
List<Double> numberList = Doubles.asList(numbers);
numberList.set(0, 0.0); // This will throw UnsupportedOperationException
System.out.println("Original Array: " + Arrays.toString(numbers));
System.out.println("Number List: " + numberList);
运行此代码将输出以下结果:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.base/java.util.AbstractList.add(AbstractList.java:153)
at java.base/java.util.AbstractList.add(AbstractList.java:111)
at com.google.common.collect.ImmutableList$Itr.remove(ImmutableList.java:702)
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
at Test.main(Test.java:14)
因此,在使用Doubles.asList()
方法时,请务必牢记返回的List
是不可变的。