添加对象到List of Long



我想添加一个长对象的长列表,但我得到一些错误,我不明白

我有以下最小的例子:

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字面值2L3L
  • 而不是将23转换为long

您已经使用list .of()方法初始化了列表变量。这就是为什么列表是不可变的。不能添加任何项目。这也可以在错误消息中看到。

请用一个新的ArrayList实例初始化变量。然后你就可以开始往里面添加项目了。

List<Long> longList = new ArrayList<>():
longList.add(3L);
longList.add(2L);