我想添加一个长对象的长列表,但我得到一些错误,我不明白
我有以下最小的例子:
package main;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<Long> LongList = List.of((long) 3);
LongList.add((long) 2);
}
}
错误信息是:
线程"main"异常java.lang.UnsupportedOperationException在java.base/java.util.ImmutableCollections.uoe (ImmutableCollections.java: 142)在java.base/java.util.ImmutableCollections AbstractImmutableCollection.add美元(ImmutableCollections.java: 147)main.Test.main (Test.java: 10)
我需要长格式,我试图改变我转换为长的方式。此外,我试图给出明确添加的位置,但没有任何改变。
摘自List::of
(docs.oracle.com
)的文档:
返回一个包含一个元素的不可修改列表。详情请参见不可修改列表。
这就是为什么调用add(...)
会导致UnsupportedOperationException
。如果我们想修改已创建的列表,我们必须创建一个可修改的列表,例如:
List<Long> LongList = new ArrayList<>(List.of((long) 3));
LongList.add((long) 2);
<<p>Ideone演示/kbd>或:
List<Long> LongList = new ArrayList<>();
LongList.add((long) 3);
LongList.add((long) 2);
<<p>Ideone演示/kbd>代码注释:
- 变量名应该写成
lowerCamelCase
,而不是UpperCamelCase
(LongList
->longList
) - 我们可以使用
long
字面值2L
和3L
而不是将
2
和3
转换为long
,您已经使用list .of()方法初始化了列表变量。这就是为什么列表是不可变的。不能添加任何项目。这也可以在错误消息中看到。
请用一个新的ArrayList实例初始化变量。然后你就可以开始往里面添加项目了。
List<Long> longList = new ArrayList<>():
longList.add(3L);
longList.add(2L);