java - 根据值对 TreeMap 进行排序?

标签 java android

我有一个包含以下键/值的 TreeMap:

    private ArrayList<TreeMap<String,String>> mList = new ArrayList<TreeMap<String,String>>();
    TreeMap<String,String> item = new TreeMap<String,String>();
    item.put("FirstName", strFirstName);  
    item.put("LastName", strLastName);
    item.put("Country", strCountry);
    mList.add( item );

添加所有项目后,如何根据存储在“姓氏”键下的 对 TreeMap 进行排序?我想要一个与原始列表格式相同但应用了上述排序的 TreeMap:

“詹姆斯”、“阿米什人”、“美国”
“查尔斯”、“布伦特伍德”、“美国”
“ jack ”、“康奈尔”、“美国”
“艾米”、“邓恩”、“美国”
“梅琳达”、“埃利斯”、“加拿大”

我发现了一个与在“常规”Java 中按值对 TreeMap 进行排序有关的类似问题,但该代码对我不起作用 - 我不知道是因为 Android 的特性还是我无法使其适应适合我的需要:-/

谢谢,
尼克

最佳答案

听起来您正在尝试对包含 TreeMap 的 ArrayList 进行排序,对吗? 如果是这样,以下应满足您的需求:

Collections.sort(mList, new Comparator<TreeMap<String, String>>(){
    public int compare(TreeMap<String, String> left, TreeMap<String, String> right) {
        return left.get("LastName").compareTo(right.get("LastName"));
    }
});

应该注意的是,可能没有必要使用 TreeMap 来包含名称/值对列表 - 我只需要创建一个类来保存这些值。

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

相关文章:

java - 如何强制执行: button. setImageResource(R.drawable.x_sign)?

java - 使用 Kotlin 扩展 java 类首选项时的多个构造函数

Java 计算器给出奇怪的结果

java - Android Oreo+ 中的 AlarmManager 和 BroadcastReceiver

Android 自动安装 APK

java - Tomcat 8 Apache Log4j 1.2.17 时间

java - 将对象列表转换为 <String,Map<String,Integer>> java8 流的映射

java - 如何从内部存储读取文件

java - Windows:如何获取所有可见窗口的列表?

Java 泛型和父类(super class)型标记