【发布时间】:2021-04-15 18:47:24
【问题描述】:
我有两个列表
list1 = [ { city: 'Los Angeles', population: '4 million ' } ... ]
list2 = [ { nameOfCity: 'New York', language: 'English' }, {nameOfCity: 'Berlin', language: 'German' ]
现在我需要创建一个新列表并按城市名称过滤这两个列表,然后按相同的语言对其进行分组
newClass(val nameOfCities: List<String>, language: String)
所以我需要检查 list2 的城市名称是否在列表 2 中(list2.filter { it.nameOfCity != list1.city } 并将所有名称存储在按语言分组的 nameOfCities 列表中
所以最终结果应该是这样的:
[
{ nameOfCities: [New York, Chicago]
language: Engilsh
},
{ nameOfCities: [Berlin]
language: German
}
]
所以我得到了 list1 中不存在并按相同语言分组的所有城市的新列表。
这是我得到的最接近的:
for (item in list1) {
reducedList = (list2.filter { it.nameOfCity != item.city }.map { newClass(it.nameOfCity, it.language) })
.toList().groupBy { it.language }
}
但是格式是这样的:
'english': [
{ nameOfCity: 'Los Angeles', language: 'English' },
{ nameOfCity: 'New York', language: 'English' },
],
'german': [ { nameOfCity: 'Berlin ', language: 'German' } ]
【问题讨论】: