如何在3个类别中对列表进行排序 [英] How to sort List of List in 3 Categories

查看:193
本文介绍了如何在3个类别中对列表进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想基于许多列对列表进行排序,但是我不知道如何进行.

I want to sort a list based on many columns but I do not know how to proceed.

输入:

List<String> a = ["TEAMA", "COUNTRYA", "AGEA", "PLAYERA"]
List<String> b = ["TEAMB", "COUNTRYF", "AGEA", "PLAYERB"]
List<String> c = ["TEAMC", "COUNTRYR", "AGEB", "PLAYERC"]
List<String> d = ["TEAMB", "COUNTRYF", "AGEC", "PLAYERD"]
List<String> e = ["TEAMA", "COUNTRYA", "AGEA", "PLAYERE"]
List<String> f = ["TEAMA", "COUNTRYF", "AGEE", "PLAYERF"]
List<List<String>> FinalList = []
FinalList.add(a)
FinalList.add(b)
FinalList.add(c)
FinalList.add(d)
FinalList.add(e)
FinalList.add(f)

输出:

["TEAMA", "COUNTRYA", "AGEA", "PLAYERA"]
["TEAMA", "COUNTRYA", "AGEA", "PLAYERE"]
["TEAMA", "COUNTRYF", "AGEE", "PLAYERF"]
["TEAMB", "COUNTRYF", "AGEA", PLAYERB"]
["TEAMB", "COUNTRYF", "AGEC", "PLAYERD"]
["TEAMC", "COUNTRYR", "AGEB", "PLAYERC"]

我该如何进行呢?

推荐答案

您可以创建具有多个列的比较器,并一次使用一个比较器,或者将它们链接起来以按照多种排序标准进行排序:

You can create as many comparators as you have columns and use one at a time or chain them to sort by multiple sorting criteria:

Comparator<List<String>> byIndex0 = Comparator.comparing(i -> i.get(0));
Comparator<List<String>> byIndex1 = Comparator.comparing(i -> i.get(1));
Comparator<List<String>> byIndex2 = Comparator.comparing(i -> i.get(2));
Comparator<List<String>> byIndex3 = Comparator.comparing(i -> i.get(3));

按期望的标准对最终列表进行排序,例如.按第一个索引(团队)

Sort your final list by the deseired criteria, eg. by the first index (Team)

FinalList.sort( byIndex0 );

要按两个条件排序,您可以使用#thenComparing将它们链接起来,例如.按团队,然后按国家

To sort by two criterias you can just chain them using #thenComparing, eg. by team an then by country

FinalList.sort( byIndex0.thenComparing(byIndex1));

或全部使用

FinalList.sort( byIndex0.thenComparing(byIndex1).thenComparing(byIndex2).thenComparing(byIndex3));

这篇关于如何在3个类别中对列表进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆