📌  相关文章
📜  Java番石榴 |带有示例的 Doubles.asList() 方法(1)

📅  最后修改于: 2023-12-03 15:16:36.521000             🧑  作者: Mango

Java番石榴 | 带有示例的 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是不可变的。