【问题标题】:How to add tuple to List and avoid java.lang.UnsupportedOperationException如何将元组添加到 List 并避免 java.lang.UnsupportedOperationException
【发布时间】:2013-06-18 16:02:51
【问题描述】:

当我尝试将 (Int, String) 类型的对象添加到列表时,我收到以下异常:

var data = List((10, "test1"))                    
data.add((11, "here"))  

java.lang.UnsupportedOperationException
java.util.AbstractList.add(AbstractList.java:131)
java.util.AbstractList.add(AbstractList.java:91)

如何将此元组 (11, "here") 添加到 List 'data' 中?

为什么我会收到此异常?

【问题讨论】:

  • 你在使用java列表吗?因为,此代码不会以其他方式编译(至少在 scala 2.8-2.10 上)。 List是如何定义的?

标签: list scala scala-collections


【解决方案1】:

您已导入 scala.collection.JavaConversions._,并且您正在尝试对 Scala 不可变列表使用 Java 可变 add 操作。

这行不通!

也许你只是想

var data = List((1, "one"))
data = (2, "two") :: data

【讨论】:

  • 这会将元组添加到数据中。它们的附加语法是什么。 data = data :: (2, "two") 给出错误
  • @Haider - 你可以使用data = data :+ ((2, "two")),但你不应该使用List。列表上的追加很慢。如果您正在构建一个列表,请在末尾添加并反转整个内容(或可变地使用 List.newBuilder+=,然后在末尾使用 result 生成不可变的 List)。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-21
  • 2013-01-04
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多