gpt4 book ai didi

java - 根据键的值对列表进行排序

转载 作者:行者123 更新时间:2023-12-01 11:11:27 25 4
gpt4 key购买 nike

我有一个包含用户姓名的列表。

List<String> members = new ArrayList<>();

我像这样存储用户及其积分:

Map<String, Integer> membersAndPoints = new HashMap<>();

for(String member : members) {
membersAndPoints.put(member, Utils.getPoints(member));
}

请注意,积分不是唯一的,如果多个用户拥有相同的积分,则他们必须处于相似的位置。然后我想根据 map 的值对成员进行排序,这就是我不知道该怎么做。如果一名成员(member)拥有 1000 分,并且没有其他人拥有超过该积分,则该成员(member)将处于排名第 0 的位置,依此类推。

List<String> ranking = new ArrayList<>(); 

看看我得到的回复,我这样做了,但我不确定这是否是我想要的。

Collections.sort(clans, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return Integer.valueOf(Utils.getPoints(o1)).compareTo(Integer.valueOf(Utils.getPoints(o2)));
}
});

编辑:我这样做了,并且有效:

List<String> list = new ArrayList<String>() {
{
add("Example1");
add("Example2");
add("Example3");
add("Example4");
add("Example5");
}
};
list.sort(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return getFor(s2).compareTo(getFor(s1));
}
});
for(String s : list) {
System.out.println(String.format("%s : %s", s, getFor(s)));
}
}

public static Integer getFor(String s) {
switch (s) {
case "Example1":
return 29;
case "Example2":
return 94;
case "Example3":
return 67;
case "Example4":
return 34;
case "Example5":
return 94;
default:
return 0;
}
}

最佳答案

使用比较器。您应该在其中重写 compareTo 方法。在那里,您应该根据每个条目的值来比较它们。

或者,您也可以将排序 map 与自定义比较器一起使用。它将根据比较器对您的条目集进行排序

关于java - 根据键的值对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32308416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com