gre*_*obo 1 immutability kotlin
我正在尝试为一个国家创建一个简单的数据类。
data class Country(val name: String, val capital: String)
Run Code Online (Sandbox Code Playgroud)
这很好用。现在我想添加邻居。
data class Country(val name: String, val capital: String, val neighbors: List<Country>)
Run Code Online (Sandbox Code Playgroud)
这会导致问题。加拿大和美国是邻居。我怎样才能干净地实例化每个国家对象?我不想让邻居元素可变。是否有可能做到这一点?(我首先尝试创建没有邻居的国家,然后使用复制构造函数创建有邻居的国家。但随后 equals 方法出现了问题。)这似乎是一个简单的问题,但我不确定如何解决。
小智 5
我认为你应该用 id 来表示邻居,然后创建一个函数来执行查询。这是我的解决方案
data class Country(
val id : Int,
val name: String,
val capital: String,
val neighbors: List<Int> = emptyList(),
){
// Function to retrieve neighbors
fun getNeighbors(countries : List<Country>) : List<Country>{
return countries.filter { it.id in neighbors }
}
}
val Togo = Country(id = 1, name = "TOGO", capital = "Lome", neighbors = listOf(2, 3, 4))
val Benin = Country(id = 2, name = "Benin", capital = "Porto Novo", neighbors = listOf(1))
val Ghana = Country(id = 3, name = "Ghana", capital = "Accra", neighbors = listOf(1, 2))
val Burkina = Country(id = 4, name = "Burkina Faso", capital = "Ouagadougou", neighbors = listOf(1, 2, 3))
val allCountries = listOf(Togo, Benin, Ghana, Burkina)
//Here you have the list of neighbors
val beninNeighbors = Benin.getNeighbors(allCountries)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |