解决算法任务,来到一个有趣的情况,以前我没有注意。
以下是示例:
val testList1 = mutableListOf<String>()
testList1.add("f")
testList1.add("n")
Toast.makeText(this, testList1.size.toString(), Toast.LENGTH_SHORT).show()
在这段代码中,我的toast将返回大小2。这是正常的,也是意料之中的。但让我们举个例子:
val testList2 = mutableListOf(mutableListOf<String>())
testList2.add(mutableListOf("sf", "fgs"))
testList2.add(mutableListOf("sw", "fgg"))
Toast.makeText(this, testList2.size.toString(), Toast.LENGTH_SHORT).show()
这里toast显示size = 3,尽管我添加了2个元素(2个列表),所以当示例化它时,添加1个emptyList作为第一个元素。
解决这个问题不是什么大问题,我们可以只是:
变量finalList = testList2.remove如果{它是空的()}
但我很好奇为什么会发生这种情况。也有什么好的方法来避免它。想知道一点点,如果可能的话
2条答案
按热度按时间0ejtzxu11#
testList2
包含3个对象并不奇怪。testList2
是用一个初始空列表构造的。在这里,您可以通过这些代码定义一个空的可变列表。
pwuypxnk2#
传递给
mutableListOf
函数的是它返回的列表的初始内容,因为在mutableListOf()
的外部调用中嵌套了mutableListOf()
的调用,所以创建的列表的初始值是另一个MutableList。如果希望列表从空开始,则在调用
mutableListOf()
时不要在()
中放入任何内容。如果你用这种方式构造你的列表,你需要指定列表的类型,因为它没有一个参数来推断类型。
或者
或