当前位置: 首页 > 知识库问答 >
问题:

数组转换为列表错误[重复]

高承望
2023-03-14

有人能向我解释下一行代码会发生什么以及它为什么有效吗?

Integer[] myray = {1,2,3,4,5};
List<Integer> l = new ArrayList<Integer>(Arrays.asList(myray));
l.add(6);
System.out.println(l);

上面的代码工作正常。它将数组转换为列表,然后添加另一个元素。但是下面的代码不起作用

Integer[] myray = {1,2,3,4,5};
List<Integer> l = (Arrays.asList(myray));
l.add(6);
System.out.println(l);

上面的代码给了我以下错误:线程“main”java.lang.UnsupportedOperationException有人能告诉我这两个转换之间的区别吗?为什么只有第一个转换有效??提前谢谢

共有2个答案

单于帅
2023-03-14

因为来自 Arrays 类的 asList 方法会为您提供一个不可变列表,您无法在其中修改该列表。它只是可读的。

这是相同的文档

返回由指定数组支持的固定大小列表。

在第一种情况下,你不是直接使用它,而是围绕它创建一个新的列表。

new ArrayList<Integer>(Arrays.asList(myray));

当你在内部这样做时,元素只得到copy,你得到的是一个ArrayList的常规实例

涂玉韵
2023-03-14

数组返回一个由数组支持的固定大小的列表实现(java.utils.Array.ArrayList),因此您无法向其添加元素(或从中删除元素)。

当您创建一个新的 java.util.ArrayList 并将您从 Arrays.asList 获得的固定大小的列表传递给其构造函数时(就像您在第一个代码段中所做的那样),您将获得一个普通的 java.util.ArrayList,您可以在其中添加元素。

 类似资料:
  • 下面是一个示例数据帧: 我想要的是 最好作为Numpy数组的列表。 我知道给了我列表,而给了我类似于的东西,但作为对象。但是,我尝试了,但没有得到预期的结果。 我该如何实现这一点?谢谢!

  • 通过使用Java8流: 从性能上看,哪个更好?

  • 我得到一个json数组从服务器: 我想使用gson将上述json数据转换为Java

  • 问题内容: 我有一个这样的清单: 并在这样的对象上: 如何将“列表”分配给“ myMatrix”? 我不想遍历列表并将元素逐个分配给MyMatrix,但我想尽可能地直接分配它(使用oppurtune修改)。谢谢 问题答案: 您可以使用。 Java文档

  • 问题内容: 我使用一个外部模块(libsvm),该模块不支持numpy数组,仅支持元组,列表和字典。但是我的数据是二维二维数组。我如何以pythonic方式转换它,也就是没有循环。 问题答案: 您可以简单地将矩阵转换为,以证明:

  • 问题内容: 我如何转换 至 问题答案: 使用简单的列表理解: 会给你: