0
私はどのようにビルドカスタムComparator
を理解しようとします。私は同様のquestionを見つけましたが、私はまだ固執しています。私は、例えば、いくつかArrayList
Sを使用してファイルをソートしたい:Groovyカスタムコンパレータ
私のファイルを:
def files = ['author/foo.pkb', 'author/foo.pks',
'version/test1.pks', 'version/test1.pkb', 'Somethink/foo.sql']
マイオーダーリスト:
def my_order = ['version', 'author', 'somethink'] // 1 value
def my_extension_order ['.pks', '.pkb']
そして、私はそのようsomethinkを構築したい:
def my_index = { x ->
return my_order.findIndexOf { x.contains(it) }
}
def my_extension_order = { y ->
return my_extension_order.findIndexOf { y.contains(it) }
}
files.sort { a, b -> my_index(a) <=> my_index(b) ?: a <=> b && // sort files and extension
出力では、ファイルをソートしてmy_order
とし、my_extension_order
。それはそのようになります。私は1つの一貫した出力を得るために2つのArrayList
sが私のファイルをソートしたいfile.sort
にまとめる
def = ['version/test1.pks', 'version/test1.pkb', 'author/foo.pks', 'author/foo.pkb',
'Somethink/foo.sql']
を。だからこのようにコンパレータを構築するには?