- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我读了这篇文章: Difference between Arrays.asList(array) vs new ArrayList<Integer>(Arrays.asList(ia)) in java
我对此有疑问。我看行:
List<Integer> list2 = Arrays.asList(ia)
还有一行说:
Of course, some List operations aren't allowed on the wrapper, like adding or removing elements from the list, you can only read or overwrite the elements.
如果 list2 引用了 List 接口(interface),我希望它能实现 Java 中 List 接口(interface)中包含的所有方法。 https://docs.oracle.com/javase/7/docs/api/java/util/List.html .
add(int index, E element)
和
remove(int index)
显示在List接口(interface)中,那怎么可能没有在list2中实现呢?
我原以为 list2
是一个 List;因此我可以调用属于 List 接口(interface)的所有方法?!那么为什么在调用 add()
或 remove()
时会抛出异常呢?
最佳答案
这里有一个很容易被忽略的微妙细节:
Arrays.asList() javadoc 简要提到:
Returns a fixed-size list backed by the specified array.
换句话说:是的,你收到了一个写着“我是一个列表”的东西;但实际上,底层实现为您提供了我们称之为结构不可变列表对象的东西。因此,所有会更改该特定列表的结构 的方法...都被“禁用”(通过在调用时抛出异常)。您仍然可以调用 set()
来更改该列表中的元素。
长话短说:此方法的目的不是为您提供完全支持列表的对象。此方法的目的是让您快速创建对象的固定“列表”。
更多的是个人观点:我同意,这其实是不“一致”的。我本以为会返回一个完全不可变 列表;而不是一些“半生不熟”的“结构不可变”。
关于java - Arrays.asList 的返回类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44018730/
这个问题在这里已经有了答案: Arrays.asList(int[]) not working [duplicate] (4 个答案) 关闭 6 年前。 我目前正在尝试解决 Problem 38 o
这个问题在这里已经有了答案: Calling Java varargs method with single null argument? (6 个答案) 关闭 3 年前。 这个小程序 public
有什么区别 List list1 = new ArrayList(Arrays.asList(ia)); // Copy List list2 = Arrays.asList(ia); ,其中 ia是
我有一个 Android 中可扩展 View 的代码,它将有限的数据加载到适配器中。我想自定义数据,但我被 Arrays.asList() 语法所困扰。 这是现在加载数据的代码: public
Arrays.asList() 是一个 Java 的静态方法,它可以把一个数组或者多个参数转换成一个 List 集合。这个方法可以作为数组和集合之间的桥梁,方便我们使用集合的一些方法和特性。本文将介
1. 使用Arrays.asList的注意事项 1.1 可能会踩的坑 先来看下Arrays.asList的使用: List<Integer> statusList = Arr
首先,该方法是将数组转化为list。有以下几点需要注意: (1)该方法不适用于基本数据类型(byte,short,int,long,float,double,boolean) (2)该方法将数组
<pre name="code" class="html"><pre name="code" class="h
Arrays.asList() 声明如下。 @SafeVarargs @SuppressWarnings("varargs") public static List asList(T... a) {
这是我想要做的示例代码,我正在尝试创建任何混合类型 boolean 数组/int数组/长数组的 float 组/int/long/boolean/字符串的对象列表 public List saveSt
我有一个对象,其中包含一些包私有(private)成员变量,我将它们添加到另一个对象中的 Google Sheets v4 ValueRange 中。当前的代码看起来有点像这样: List> data
我有一个 float[],我想获得一个包含相同元素的列表。我可以做一件丑陋的事情,将它们一一添加,但我想使用 Arrays.asList 方法。但有一个问题。这有效: List list = Arra
执行下面的代码后,我觉得 Arrays.asList 在打印显示源数组的最终内容后返回了对源数组的引用。 String[] circus2 = { "Monkey", "Elephant" }; Li
这个问题在这里已经有了答案: Arrays.asList() not working as it should? (12 个答案) 关闭 8 年前。 我正在编写一个简单的 Java 方法。我已经实例
我正在从数据库中接收作为项目字符串的数据,例如 "Nike, Adidas, Reebok" String data = "Nike, Adidas, Reebok"; 我有一个算法,它采用如下所示的
在 Arrays.java 文件中。 asList 方法定义如下。 @SafeVarargs public static List asList(T... arr) { r
Long[] myArr = new Long[size]; // Code to store values in myArr List myList = new ArrayList(); // Co
Arrays.asList 返回类型列表。但是 List 是一个接口(interface),那么如何实例化它呢?如果尝试实例化类型化列表,我会收到一条错误消息,指出这是不可能的。 编辑 没关系,我明白
我读了这篇文章: Difference between Arrays.asList(array) vs new ArrayList(Arrays.asList(ia)) in java 我对此有疑问。
假设我有一个 Person 类,我正在尝试创建一个列表; Person p1 = new Person("first", "id1"); Person p2 = new Person(
我是一名优秀的程序员,十分优秀!