Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin中阵列的替代方案_Kotlin - Fatal编程技术网

Kotlin中阵列的替代方案

Kotlin中阵列的替代方案,kotlin,Kotlin,目前我有一个非常简单的数组: val name = arrayListOf( "Steve", "David", "Chris, "Bev") MyResult.text = name[2] 给“克里斯” 但我想使用相同的数据,但包括年龄,比如: 给出相同的结果,即使用允许我指定数组中位置的东西,以便能够返回项目 感谢您的帮助 当每个元素都是相同类型时,数组(和列表,通常更有用) 在本例中,情况并非如此。您有多种类型

目前我有一个非常简单的数组:

val name = arrayListOf(
"Steve", 
"David",
"Chris,
"Bev")



MyResult.text = name[2]
给“克里斯”

但我想使用相同的数据,但包括年龄,比如:

给出相同的结果,即使用允许我指定数组中位置的东西,以便能够返回项目

感谢您的帮助

当每个元素都是相同类型时,数组(和列表,通常更有用)

在本例中,情况并非如此。您有多种类型,因为您有内部结构:一些元素以常规方式与其他元素直接相关。您拥有的实际上是一个人员列表,每个人都有几个字段。因此,请编写代码!这很简单:

data class Person(val id: Int, val name: String, val age: Int)

val people = listOf(Person(0, "Steve", 20),
                    Person(1, "David", 28),
                    Person(2, "Chris", 28),
                    Person(3, "Bev", 46))
这样,整个类型系统都在为您工作。因为您已经告诉编译器这些字段代表什么以及它们之间的关系,这可以防止您错误地混淆它们,它知道你可以对每一个人做什么。然后你可以用各种方式操纵他们。不仅仅是让这个人在列表中的特定位置:

val firstPerson = people[0]
但是通过名字来了解一个人:

val david = people.find{ it.name == "David" }
或者找到最年轻的人:

val youngest = people.minByOrNull{ it.age }
或者按字母顺序排列他们的名字:

val names = people.map{ it.name }.sorted()
Kotlin标准库有很多扩展函数和其他处理s的机制,Kotlin的es使创建这样的价值对象变得非常容易

如果人与人之间没有固有的秩序,那么a可能更合适

或者,如果您经常通过ID引用它们,那么您可以将它们存储在一个数据库中,并将它们的ID作为密钥

这完全取决于你将如何处理它们

但数组不太可能是最好的选择。数组是一个必要的恶魔,需要用于一些特定的事情(varargs、实现更高级别的结构、高效地存储原始值以及与遗留代码互操作),但对于大多数其他用途,列表更强大、更灵活,而且支持得更好。大多数Kotlin代码应该使用列表而不是数组。当每个元素都是相同类型时,数组(和列表,它们通常更有用)

在本例中,情况并非如此。您有多种类型,因为您有内部结构:一些元素以常规方式与其他元素直接相关。您拥有的实际上是一个人员列表,每个人都有几个字段。因此,请编写代码!这很简单:

data class Person(val id: Int, val name: String, val age: Int)

val people = listOf(Person(0, "Steve", 20),
                    Person(1, "David", 28),
                    Person(2, "Chris", 28),
                    Person(3, "Bev", 46))
这样,整个类型系统都在为您工作。因为您已经告诉编译器这些字段代表什么以及它们之间的关系,这可以防止您错误地混淆它们,它知道你可以对每一个人做什么。然后你可以用各种方式操纵他们。不仅仅是让这个人在列表中的特定位置:

val firstPerson = people[0]
但是通过名字来了解一个人:

val david = people.find{ it.name == "David" }
或者找到最年轻的人:

val youngest = people.minByOrNull{ it.age }
或者按字母顺序排列他们的名字:

val names = people.map{ it.name }.sorted()
Kotlin标准库有很多扩展函数和其他处理s的机制,Kotlin的es使创建这样的价值对象变得非常容易

如果人与人之间没有固有的秩序,那么a可能更合适

或者,如果您经常通过ID引用它们,那么您可以将它们存储在一个数据库中,并将它们的ID作为密钥

这完全取决于你将如何处理它们


但数组不太可能是最好的选择。数组是一个必要的恶魔,需要用于一些特定的事情(varargs、实现更高级别的结构、高效地存储原始值以及与遗留代码互操作),但对于大多数其他用途,列表更强大、更灵活,而且支持得更好。大多数Kotlin代码应该使用列表而不是数组。

一个类型为
Person
的对象数组然后…?一个类型为
Person
的对象数组然后…?这太棒了,并且确实给了我一些使用其他代码的要点!谢谢,谢谢!这真是太棒了,真的给了我一些使用其他代码的要点!谢谢,谢谢!