【问题标题】:How does add method works for List<E> type val in kotlinadd 方法如何适用于 Kotlin 中的 List<E> 类型 val
【发布时间】:2018-05-03 09:59:48
【问题描述】:

我有一个像

这样的变量
val itemList:List<String> = ArrayList()
itemList.add("One")
itemList.add("Two")

如何在 kotlin 中实现这一点

【问题讨论】:

  • 是的,但是 add 方法在这里不起作用,它给出了编译时错误
  • listOf("One", "Two") 立即为您提供初始化列表
  • 是的,但在这种情况下,我将无法在运行时添加元素
  • @BrijeshJoshi 检查我的答案。
  • 如果你想走 Kotlin 的方式,最好使用高阶接口,在你的情况下是 MutableList,它可以修改列表,如果你需要不可变列表使用 List 。所以你的行将是 val list: MutableList = ArrayList()

标签: android list kotlin


【解决方案1】:

不要

val itemList:List<String> = ArrayList()

 val itemList:MutableList<String> = ArrayList()

你应该使用MutableList

interface MutableList<E> : List<E>, MutableCollection<E> (source)

支持添加和删除元素的通用有序元素集合。

演示

 val itemList:MutableList<String> = ArrayList()
    itemList.add("One")
    itemList.add("Two")

【讨论】:

  • 您的解决方案有效。对此表示赞赏。但在那种情况下,我无法将变量的类型保留为 List
  • @BrijeshJoshi,你不应该将类型保留为List,在 Kotlin 中它应该是MutableList,因为List 是一个只读接口,它不公开变异函数。见another Q&Athe language reference
  • 提供一个解决方案,我可以将变量类型保留为 List 我会接受你的答案
  • @hotkey 非常感谢
  • @BrijeshJoshi 没有办法“将变量类型保留为 List”并添加元素。
【解决方案2】:

几个选项:

val itemList: List<String> = arrayListOf<String>().apply {
    add("One")
    add("Two")
}
// no need for .add method anymore!

另一种选择:

val itemList: MutableList<String> = mutableListOf()
// or
val itemList = mutableListOf<String>()

// now you have `.add()` function

您通常应该更喜欢不可修改的列表而不是可修改的列表。例如,在 Java 中,您只能使用 Collections.unmodifiableList 并在您尝试进行修改时获得运行时异常。使用 Kotlin,您可以将其变为编译时验证。

【讨论】:

    【解决方案3】:

    试试这个代码..

    class UserActivity : AppCompatActivity() {
    val itemList= ArrayList<String>()
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        itemList.add("One")
        itemList.add("Two")
    }
    

    }

    【讨论】:

      猜你喜欢
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-24
      • 2021-06-07
      • 1970-01-01
      • 2013-12-19
      • 2015-06-04
      相关资源
      最近更新 更多