如何将 Kotlin 的 MutableList 初始化为空 MutableList?

     2023-02-19     32

关键词:

【中文标题】如何将 Kotlin 的 MutableList 初始化为空 MutableList?【英文标题】:How do I initialize Kotlin's MutableList to empty MutableList? 【发布时间】:2016-01-21 14:30:40 【问题描述】:

看起来很简单,但是,如何将 Kotlin 的 MutableList 初始化为空 MutableList

我可以通过这种方式破解它,但我确信有一些更容易获得的东西:

var pusta: List<Kolory> = emptyList()
var cos: MutableList<Kolory> = pusta.toArrayList()

【问题讨论】:

【参考方案1】:

使用故意看起来像构造函数的 Kotlin 集合的 MutableList() 函数是绝对有效的。这个函数通常非常有用,因为它还可以使用一个初始化函数,该函数预填充(非空)列表的所有值。

val emptyListOfTypeUnit = MutableList(0) 

val emptyListOfTypeInt = MutableList(0)  0 
val verboseEmptyListOfTypeInt = MutableList<Int>(0)  0 

val emptyListOfTypeString = MutableList(0)  "" 
val verboseEmptyListOfTypeString = MutableList<String>(0)  "" 

val emptyListOfTypeKolory = MutableList(0)  Kolory() 
val verboseEmptyListOfTypeKolory = MutableList<Kolory>(0)  Kolory() 

免责声明:我是在面向 Kotlin 开发人员的 Jetbrains Academy 课程中了解到这一点的,遗憾的是该课程并未公开。因此,我无法在此处链接参考。对不起。

【讨论】:

【参考方案2】:

在 kotlin 中创建可空字符串的可变列表

val systemUsers: MutableList<String?> = mutableListOf()

【讨论】:

【参考方案3】:

根据列表类型的不同形式,用于数组列表:

val myList = mutableListOf<Kolory>() 
// or more specifically use the helper for a specific list type
val myList = arrayListOf<Kolory>()

对于链表:

val myList = linkedListOf<Kolory>()
// same as
val myList: MutableList<Kolory> = linkedListOf()

对于其他列表类型,如果您直接构造它们,将假定它们是可变的:

val myList = ArrayList<Kolory>()
// or
val myList = LinkedList<Kolory>()

这适用于任何实现List 接口的东西(即其他集合库)。

如果列表已经是可变的,则无需重复左侧的类型。或者仅当您想将它们视为只读时,例如:

val myList: List<Kolory> = ArrayList()

【讨论】:

如果我知道新的 MutableList 的大小怎么办?对于 ArrayList,我可以这样做:ArrayList(24),例如,如果我认为 24​​ 对它来说是一个好的开始,那么它可能不需要更多。 @androiddeveloper 查看列表构造函数的文档或底层列表的 Java API,您将看到所需的选项。 你忘了mutableListOf。正确的是:val myList = arrayListOf&lt;Kolory&gt;() // same as // val myList = mutableListOf&lt;Kolory&gt;() linkedListOf 用于早期版本的 Kotlin 我也相信 Kotlin 不再有 LinkedList【参考方案4】:

你可以简单地写:

val mutableList = mutableListOf<Kolory>()

这是最惯用的方式。

替代方法是

val mutableList : MutableList<Kolory> = arrayListOf()

val mutableList : MutableList<Kolory> = ArrayList()

这是利用 ArrayList 等 java 类型通过编译器技巧隐式实现类型 MutableList 的事实。

【讨论】:

你需要导入什么吗?当我在我当前的项目中写这个时,如果我尝试 mutableListOf,我会得到未解析的引用 arrayListOf 和相同 你的类路径中有stdlib吗? 我只需要将 build.gradle 中的 kotlin_version 标志切换回 1.1.0 而不是 1.1.1 @androiddeveloper 那是因为kotlin.collections.List不是 java.utils.List。 Kotlin 有一种机制来映射一些内置的 java 类型。请参阅kotlinlang.org/docs/reference/java-interop.html#mapped-types 和类似的 SO 问题。评论部分不适合详细讨论。 @Mohanakrrishna 是的,这些函数支持传递参数。【参考方案5】:

我喜欢下面的:

var book: MutableList<Books> = mutableListOf()

/** 返回具有给定元素的新 [MutableList]。 */

public fun <T> mutableListOf(vararg elements: T): MutableList<T>
    = if (elements.size == 0) ArrayList() else ArrayList(ArrayAsCollection(elements, isVarargs = true))

【讨论】:

如何通过 kotlin 中的意图传递对象的 MutableList

】如何通过kotlin中的意图传递对象的MutableList【英文标题】:HowtopassMutableListofobjectviaintentinkotlin【发布时间】:2020-07-2906:24:11【问题描述】:我的数据类为@ParcelizedataclassWorkouts(valid:Int,valname:String,valimage:Int,valtime:Long):Parcelable在一... 查看详情

如何将字符串从共享首选项转换为 MutableList<LatLng> 对以在 kotlin 中绘制折线?

】如何将字符串从共享首选项转换为MutableList<LatLng>对以在kotlin中绘制折线?【英文标题】:HowdoIconvertstringfromsharedpreferencestoMutableList<LatLng>pairstodrawpolylinesinkotlin?【发布时间】:2021-10-1321:01:13【问题描述】:我想将共享... 查看详情

将一个 mutableList 从活动 A 传递到 Kotlin 中的活动 B。

】将一个mutableList从活动A传递到Kotlin中的活动B。【英文标题】:PassamutableListfromactivityAtoactivityBinKotlin.【发布时间】:2018-07-1012:29:42【问题描述】:我正在尝试通过Kotlin中的意图将数据从活动A传递到活动B。问题是我有一个videos:M... 查看详情

kotlin集合操作②(mutablelist可变列表集合|修改mutablelist集合的mutator函数)

文章目录​​一、MutableList可变列表集合​​​​二、修改MutableList集合的mutator函数​​​​1、添加元素运算符+=和删除元素运算符-=​​​​2、通过Lambda表达式筛选要删除的元素​​一、MutableList可变列表集合使用listOf函数创... 查看详情

kotlin集合操作②(mutablelist可变列表集合|修改mutablelist集合的mutator函数)(代码片段)

文章目录一、MutableList可变列表集合二、修改MutableList集合的mutator函数1、添加元素运算符+=和删除元素运算符-=2、通过Lambda表达式筛选要删除的元素一、MutableList可变列表集合使用listOf函数创建的List集合是只读列表集合;... 查看详情

kotlin自定义的getter和mutablelist。(代码片段)

...,我认为它不正确。classProduct(valbasePrice:Double,valstockList:MutableList<Stock>)valvalueOfAllItems:Double=0.0get()varvalue=fieldfor(iteminstockList)value=item.quantity.toDouble()*basePricereturnvalue这里是库存类。classStock(valquantity:Int,valgood:boolean)请帮助我编辑... 查看详情

如何在kotlin中使用self类型参数作为接口(代码片段)

...的:vallist:List<Element<*>>但我建议您根据文档使用MutableList:列表:通用的有序元素集合。此接口中的方法仅允许对列表进行只读访问;通过MutableList接口支持读/写访问。MutableList:支持添加和删除元素的通用有序元素集合... 查看详情

如果 MutableList 为空,如何更改 TextView 的可见性? (安卓/科特林)

】如果MutableList为空,如何更改TextView的可见性?(安卓/科特林)【英文标题】:HowtochangevisibilityofaTextViewifaMutableListisempty?(Android/Kotlin)【发布时间】:2021-12-0403:00:06【问题描述】:我正在使用两个片段和一个ViewModel开发一个简单... 查看详情

j.u.v. 是啥意思?代表`java.lang.ClassCastException:j.u.v不能转换为kotlin.collections.MutableList`[重复]

】j.u.v.是啥意思?代表`java.lang.ClassCastException:j.u.v不能转换为kotlin.collections.MutableList`[重复]【英文标题】:Whatdoesj.u.v.standforin`java.lang.ClassCastException:j.u.vcannotbecasttokotlin.collections.MutableList`[duplicate]j.u.v.是什么 查看详情

kotlin集合操作总结(list集合|mutablelist集合|list集合遍历|set集合|mutableset集合|map集合|可变map集合)(代码片段)

...e函数2、getOrNull函数三、List创建与元素获取代码示例四、MutableList可变列表集合五、修改MutableList集合的mutator函数1、添加元素运算符+=和删除元素运算符-=2、通过Lambda表达式筛选要删除的元素六、List集合遍历七、List通... 查看详情

kotlin集合操作总结(list集合|mutablelist集合|list集合遍历|set集合|mutableset集合|map集合|可变map集合)(代码片段)

...e函数2、getOrNull函数三、List创建与元素获取代码示例四、MutableList可变列表集合五、修改MutableList集合的mutator函数1、添加元素运算符+=和删除元素运算符-=2、通过Lambda表达式筛选要删除的元素六、List集合遍历七、List通... 查看详情

?: 在 Kotlin 中做啥? (猫王操作员)

...54【问题描述】:我不知道?:在这种情况下做了什么vallist=mutableList?:mutableListOf()为什么可以修改成这个vallist=if(mutableList!=null)mutableListe 查看详情

如何将 Java 源文件的一部分转换为 Kotlin?

】如何将Java源文件的一部分转换为Kotlin?【英文标题】:HowcanIconvertapartofJavasourcefiletoKotlin?【发布时间】:2016-04-0721:16:45【问题描述】:在我的Kotlin项目中,我想将部分Java代码转换为Kotlin。将Java文件转换为Kotlin的菜单项被禁用... 查看详情

如何将图像保存到kotlin中的画廊

】如何将图像保存到kotlin中的画廊【英文标题】:howtosaveimagetogalleryinkotlin【发布时间】:2021-10-0913:51:36【问题描述】:我正在做一个从用户图库添加图像然后再次保存的项目,我使用下面的代码让用户选择图像并将其添加到应... 查看详情

如何将onClickListener设置为kotlin中的按钮[重复]

】如何将onClickListener设置为kotlin中的按钮[重复]【英文标题】:HowtosetanonClickListenertoabuttoninkotlin[duplicate]【发布时间】:2019-11-0700:30:59【问题描述】:我正在开发一个混合了kotlin和java的androidstudio项目。我正在尝试将onClickListener设... 查看详情

如何将数据从 DialogFragment 传递到 android / Kotlin 中的片段

】如何将数据从DialogFragment传递到android/Kotlin中的片段【英文标题】:HowtopassdatafromDialogFragmenttofragmentinandroid/Kotlin【发布时间】:2021-08-2311:39:53【问题描述】:我是Android应用开发和Kotlin的新手。当用户设置时间时,我需要从DialogF... 查看详情

更改 T 的属性时如何使 LiveData<MutableList<T>> 更新?

】更改T的属性时如何使LiveData<MutableList<T>>更新?【英文标题】:HowtomakeLiveData<MutableList<T>>updatewhenIchangeapropertyofT?【发布时间】:2022-01-0209:56:30【问题描述】:我正在制作一个应用程序,它通过向某些url发出请... 查看详情

如何将改造回调响应中的回调从 java 转换为 Kotlin

】如何将改造回调响应中的回调从java转换为Kotlin【英文标题】:HowconvertacallbackinsideretrofitcallbackresponsefromjavatoKotlin【发布时间】:2019-05-0900:50:02【问题描述】:我是Kotlin的新手,我有一个简单的问题:我将我的所有项目从java转... 查看详情