【问题标题】:How to alphabetize a list of hashmaps [duplicate]如何按字母顺序排列哈希图列表[重复]
【发布时间】:2014-02-22 22:26:28
【问题描述】:

我有一个这样定义的 ArrayList:

ArrayList<HashMap<String, String>> recallList = new ArrayList<HashMap<String, String>>();

每张地图中只有一个元素company,即公司名称。我的问题是如何按字母顺序排列 ArrayList。我使用它是因为稍后(在其他视图中)HashMap 中会有更多元素。

【问题讨论】:

  • 您可以将Collections.sort() 与自定义比较器一起使用。可以找到many examples on stackoverflow,例如:stackoverflow.com/questions/14154127/…
  • 请在答案部分对此进行扩展。我还是有点困惑。
  • 请定义“字母化”。示例输入,示例输出。
  • @JBNizet 按字母顺序排序
  • 出于好奇,为什么不直接使用List&lt;String&gt;Set&lt;String&gt;company 这个词没有什么独特之处,因此您希望将其设为哈希键,您可以使用 Comparator 或其中一个列表的排序实现。

标签: java sorting arraylist alphabetical


【解决方案1】:

使用以下内容:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;

public class MainClass {
  public static void main(String[] args) {
    ArrayList<HashMap<String, String>> recallList = new ArrayList<HashMap<String, String>>();
    HashMap<String, String> hashMap;
    hashMap = new HashMap<String, String>();
    hashMap.put("company", "a");
    recallList.add(hashMap);
    hashMap = new HashMap<String, String>();
    hashMap.put("company", "c");
    recallList.add(hashMap);
    hashMap = new HashMap<String, String>();
    hashMap.put("company", "b");
    recallList.add(hashMap);
    System.out.println(recallList);
    Collections.sort(recallList, new Comparator<HashMap<String, String>>() {
      @Override
      public int compare(HashMap<String, String> hashMap1, HashMap<String, String> hashMap2) {
        return hashMap1.get("company").compareTo(hashMap2.get("company"));
      }
    });
    System.out.println(recallList);
  }
}

第一个和第二个输出是:

[{company=a}, {company=c}, {company=b}]
[{company=a}, {company=b}, {company=c}]

【讨论】:

    【解决方案2】:

    您可以使用 Collections.sort() 按字典顺序对其进行排序,但您已经使用 Comparator 使对象具有可比性

    class CmpHashMap implements Comparator<HashMap<String,String>>
    {
        public int compare(HashMap<String,String> h1,HashMap<String,String> h2)//assuming second String as company name and key as "key"
        {
             return h1.get("key").compareTo(h2.get("key"));
         }
     }
    

    然后使用集合

    Collections.sort(recalllist,new CmpHashMap());
    

    【讨论】:

    • 比较器应该是Comparator&lt;HashMap&lt;String, String&gt;&gt;
    • @Neuron 你的意思是compareTo
    • 哎呀今天犯了太多错误..
    猜你喜欢
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    相关资源
    最近更新 更多