Collections 从集合中删除重复项

Collections 从集合中删除重复项,collections,groovy,Collections,Groovy,我想得到一个具有不同语言的所有区域设置的列表,其中ISO3代码用于标识区域设置的语言。我认为下面的方法应该有效 class ISO3LangComparator implements Comparator<Locale> { int compare(Locale locale1, Locale locale2) { locale1.ISO3Language <=> locale2.ISO3Language } } def allLoca

我想得到一个具有不同语言的所有区域设置的列表,其中ISO3代码用于标识区域设置的语言。我认为下面的方法应该有效

class ISO3LangComparator implements Comparator<Locale> {

    int compare(Locale locale1, Locale locale2) {
        locale1.ISO3Language <=> locale2.ISO3Language
    }
}

def allLocales = Locale.getAvailableLocales().toList()
def uniqueLocales = allLocales.unique {new ISO3LangComparator()}

// Test how many locales there are with iso3 code 'ara'
def arabicLocaleCount = uniqueLocales.findAll {it.ISO3Language == 'ara'}.size()

// This assertion fails
assert arabicLocaleCount <= 1
类ISO3LangComparator实现比较器{ int比较(区域设置locale1、区域设置locale2){ locale1.iso3语言locale2.iso3语言 } } def allLocales=Locale.getAvailableCales().toList() def uniqueLocales=allLocales.unique{new ISO3LangComparator()} //测试有多少地区使用iso3代码“ara” def arabicLocaleCount=uniqueLocales.findAll{it.ISO3Language=='ara'}.size() //这个断言失败了
断言arabicLocaleCount您使用了错误的语法:您正在使用:

你应该使用

所以只要用
()
而不是
{}
,你的问题就解决了。

亚当说的。
或者

你忘了比较仪

allLocales.unique {new ISO3LangComparator()}
allLocales.unique (new ISO3LangComparator())
allLocales.unique{it.ISO3Language}