我有以下列表:
在我的映射列表中使用以下代码进行一些计算后,
它返回一个基于整数和名称排序的列表:
但这样做并不能返回正确的结果。 我想知道是否可以使用哈希表来实现,或者甚至使用ArrayList?
Map<String, Integer> map = new HashMap<String, Integer>();
Map<String, Map<Integer, Integer>> map2 = new HashMap<String, Map<Integer, Integer>>();
在我的映射列表中使用以下代码进行一些计算后,
map.entrySet().stream().sorted(Map.Entry.<String, Integer>comparingByValue()
.reversed()).limit(1000).forEach(System.out::println);
它返回一个基于整数和名称排序的列表:
team1=1511
team4=1106
team2=805
team3=792
这意味着team1以1211的时间获得第一名,team4以1106的时间获得第二名,以此类推。
现在,在我的map2中,我希望能够按照车手的时间拥有相同的列表,但应该像这样排序:
team1=1511
team4=1106
team1=1010
team2=905
team2=892
team3=750
team3=740
team4=600
这意味着团队1以1511的时间获得第一名,然后是团队4以1106的时间,接着又是团队1以1010的时间等等。
(基本上,你有一个车队,每个车队至少有2名司机,在进行一些计算之后,你希望能够看到谁赢得了比赛)
对于地图2,我使用以下方法进行排序和返回:
map2.entrySet().stream().sorted(Map.Entry.<String, Map<Integer, Integer>>comparingByKey()
.reversed()).limit(1000).forEach(System.out::println);
但这样做并不能返回正确的结果。 我想知道是否可以使用哈希表来实现,或者甚至使用ArrayList?
new HashMap<String, Map<Integer, Integer>>();
和new HashMap<String, Integer>();
不是相同的数据结构... 这就是为什么我不知道你把那些时间放在哪里 ;) - Grzegorz Górkiewicz