我如何创建一个整数和字符串对列表(或其他类型的容器),允许两对重复并可以按整数值排序?
我需要用名称(字符串)和评分(整数)对填充一个容器,该容器必须允许名称和评分中的重复值,并且我需要按评分值对这个列表进行排序。
我尝试使用 SortedMap 但不允许重复值:
SortedMap<Integer,String> sm=new TreeMap<Integer, String>();
sm.put(23, "Peter");
sm.put(11, "Tony");
sm.put(110, "Claire");
sm.put(13, "ferca");
sm.put(55, "Julian");
sm.put(13, "Pedro");
在此示例中,ferca 和 Pedro 具有相同的得分值,这是我需要允许的,但是 SortedMap 将“ferca”覆盖为“Pedro”。
执行此操作的最佳容器类型是什么?
最佳答案
既然你想订购你的 Collection ,我建议你使用List
和 Collections.sort
.如果您决定采用这种方法,您仍然有两个选择:
- 创建自定义
Comparator
可以作为参数传递给sort
, 或 - 让辅助
Score
类(class)工具Comparable<Score>
这是一个例子,ideone demo后一种方法:
import java.util.*;
class Score implements Comparable<Score> {
int score;
String name;
public Score(int score, String name) {
this.score = score;
this.name = name;
}
@Override
public int compareTo(Score o) {
return score < o.score ? -1 : score > o.score ? 1 : 0;
}
}
public class Test {
public static void main(String[] args){
List<Score> scores = new ArrayList<Score>();
scores.add(new Score(23, "Peter"));
scores.add(new Score(11, "Tony"));
scores.add(new Score(110, "Claire"));
scores.add(new Score(13, "ferca"));
scores.add(new Score(55, "Julian"));
scores.add(new Score(13, "Pedro"));
Collections.sort(scores);
}
}
关于java - 如何创建整数和字符串对的排序列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4353572/