Kotlin List和MutableList:两个不同的引用,指向同一个集合对象
你能举一个这个报价的例子吗 在使用集合接口时,需要记住的一点是,只读集合不一定是不变的。如果使用的变量具有只读接口类型,则这可能只是对同一集合的多个引用之一。其他引用可以具有可变接口类型 我想编写一个函数,将元素添加到某个集合中,同时在fun main()中创建val someCollection:List。我可以通过变量someCollection:List=fundad(someCollection.toMutable)来实现这一点,但是我可以这样做而不使用变量var吗 范例Kotlin List和MutableList:两个不同的引用,指向同一个集合对象,list,kotlin,mutablelist,List,Kotlin,Mutablelist,你能举一个这个报价的例子吗 在使用集合接口时,需要记住的一点是,只读集合不一定是不变的。如果使用的变量具有只读接口类型,则这可能只是对同一集合的多个引用之一。其他引用可以具有可变接口类型 我想编写一个函数,将元素添加到某个集合中,同时在fun main()中创建val someCollection:List。我可以通过变量someCollection:List=fundad(someCollection.toMutable)来实现这一点,但是我可以这样做而不使用变量var吗 范例 fun add
fun addEl(numbers:MutableList<Int>):List<Int>{
for (i in 1..10){
numbers.add(i)
}
return numbers.toList()
}
fun main(args: Array<String>){
var readOnlyNumbers: List<Int> = emptyList()
readOnlyNumbers = addEl(readOnlyNumbers.toMutableList())
println(readOnlyNumbers.size)
}
fun addEl(数字:可变列表):列表{
对于(1..10中的i){
数字。添加(i)
}
返回号码。toList()
}
趣味主线(args:Array){
var readOnlyNumbers:List=emptyList()
ReadOnlyNumber=addEl(readOnlyNumber.toMutableList())
println(readOnlyNumbers.size)
}
我是否可以避免使用var和重新着色ReadOnlyNumber 以下是在不使用var的情况下重写代码的各种方法:
fun addEl(numbers:MutableList<Int>):List<Int>{
for (i in 1..10) {
numbers.add(i)
}
return numbers.toList()
}
fun main(args: Array<String>){
val readOnlyNumbers: List<Int> = addEl(mutableListOf())
println(readOnlyNumbers.size)
}
fun addEl(数字:可变列表):列表{
对于(1..10中的i){
数字。添加(i)
}
返回号码。toList()
}
趣味主线(args:Array){
val readOnlyNumbers:List=addEl(mutableListOf())
println(readOnlyNumbers.size)
}
或者干脆
fun createEl(): List<Int> {
return (1..10).toList()
}
fun main(args: Array<String>){
val readOnlyNumbers = createEl()
println(readOnlyNumbers.size)
}
fun createEl():列表{
return(1..10).toList()
}
趣味主线(args:Array){
val readOnlyNumbers=createEl()
println(readOnlyNumbers.size)
}
回答这一部分:
你能举一个这个报价的例子吗
在使用集合接口时,需要记住的一点是,只读集合不一定是不变的。如果使用的变量具有只读接口类型,则这可能只是对同一集合的多个引用之一。其他引用可以具有可变接口类型
这只是简单地谈论这样的情况:
val mutableList: MutableList<Int> = mutableListOf<Int>()
val list: List<Int> = mutableList
println(list) // []
mutableList.add(0)
println(list) // [0]
val mutableList:mutableList=mutableListOf()
val列表:列表=可变列表
println(列表)//[]
可变列表。添加(0)
println(列表)/[0]
尽管list
具有类型list
而不是MutableList
,但其内容已更改
请注意,这是一个
我想编写一个函数,在fun main()中创建val someCollection:List
的同时,将元素添加到某个集合中
同样,但我不建议编写此代码;使用JB Nizet的一个版本。应该做什么?你不能只使用
val someCollection=listOf()
?如果你想给变量重新分配一个不同的列表,那么它必须是一个var,而不是val。如果你想给变量引用的列表添加一个元素,那么它必须是一个可变列表,而不是只读列表。你的问题与你的报价没有多大关系。