java - 如何创建整数和字符串对的排序列表?

标签 java

我如何创建一个整数和字符串对列表(或其他类型的容器),允许两对重复并可以按整数值排序?

我需要用名称(字符串)和评分(整数)对填充一个容器,该容器必须允许名称和评分中的重复值,并且我需要按评分值对这个列表进行排序。

我尝试使用 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/

相关文章:

java - 如何用 H2O 处理大数据集

java - 如何在Java中使用Redis命令 “bitcount”

java - 乔克 : getNextException call?

java - 如何在 Eclipse e4 中获取特定部分堆栈中的 Activity 部分?

Java 8 流 : iterate over Map of Lists

java - 如何实现Java爬虫来爬取PDF文件链接?

java - 我的枚举正确吗?

java - 无法使用 jhat、jps、jstack 调试 Java Windows 服务

java - WS : what to return when saving?

java - 我如何使用收集器而不是手动放入 java 8 中的 ConcurrentHashMap