如何有效地检查Kotlin集合中的关键字?
我有多个列表,我检查一些关键字,然后我检查如何有效地检查Kotlin集合中的关键字?,kotlin,Kotlin,我有多个列表,我检查一些关键字,然后我检查 首先,如果大陆出现并返回位置。欧洲 如果没有,请检查国家/地区并返回Loation.GERMANY 代码: 可替换为: if(listCities.contains("Madrid")) return Location.EUROPE .filter将创建另一个仅包含“Madrid”元素的列表,然后您将检查该列表的大小。这有点多余。但是有一个警告,如果你有一个多单词的名字,比如thehague,并且你搜索Hague,你就再也找不
- 首先,如果大陆出现并返回
位置。欧洲
- 如果没有,请检查国家/地区并返回
Loation.GERMANY
if(listCities.contains("Madrid")) return Location.EUROPE
.filter
将创建另一个仅包含“Madrid”元素的列表,然后您将检查该列表的大小。这有点多余。但是有一个警告,如果你有一个多单词的名字,比如thehague
,并且你搜索Hague
,你就再也找不到了。如果你想考虑到这一点,我会这样做:
if(listCities.any {it.contains("Hague", true)}) return Location.EUROPE
这一项将同时匹配海牙,海牙
,海牙
,海牙市
,等等。注意,结尾处的真
是可选的,这意味着它将忽略案例中的差异(A
将是相同的AA
),如果不需要,它可以删除
由于添加了City
对象,您只需执行以下操作:
listCities.any {it.name.contains("Hague", true)}
或者,对于简单版本:
listCities.any {it.name == "Hague"}
抱歉,编辑了示例代码我已相应地编辑了答案。祝你好运。我试着让exmaple尽可能简单。我的问题是列表是列表类型,而城市是上面编辑的。因此,元素属于城市类型,不容易实现,因此仍然很简单,将
listcity.any{it.contains(“Hague”,true)}
替换为listcity.any{it.name.contains(“Hahue”,true)}
将名称更改为实际的属性名称。或者你甚至可以做listcites.any{it.name==“Hague}
来获得简单的版本。我也编辑了答案。@Joffrey它现在应该在那里了,最后两个带有it.name
if(listCities.any {it.contains("Hague", true)}) return Location.EUROPE
listCities.any {it.name.contains("Hague", true)}
listCities.any {it.name == "Hague"}