java - 对 Hashmap<String, Object> 内的对象值进行排序

标签 java sorting hashmap

我想按对象的值对 Hashmap 进行排序。在本例中,按国家/地区代码。

  KEY              OBJECT                        
  String        LoyaltyCountry
                     - country name
                     - country code
                     - country loc

我的代码如下:

public static HashMap<String, LoyaltyCountry> loyaltyCountrySortMap(HashMap<String, LoyaltyCountry> loyaltyCountryMap) {

            if (loyaltyCountryMap != null) {
                List keys = new ArrayList();
                keys.addAll(loyaltyCountryMap.keySet());
                Collections.sort(keys, new Comparator<LoyaltyCountry>() {
                    public int compare(LoyaltyCountry o1, LoyaltyCountry o2) {
                        return o1.getCountryName().compareTo(o2.getCountryName());
                    }
                });
            }

            return loyaltyCountryMap;
        }

我怎样才能正确地做到这一点?

最佳答案

以下方法返回一个 Set,其中包含按其值排序的 Map.Entry 项。

public static <K, V extends Comparable<? super V>> SortedSet<Map.Entry<K, V>> entriesSortedByValues(Map<K, V> map) {
    SortedSet<Map.Entry<K, V>> sortedEntries = new TreeSet<Map.Entry<K, V>>(
            new Comparator<Map.Entry<K, V>>() {
                @Override
                public int compare(Map.Entry<K, V> e1, Map.Entry<K, V> e2) {
                    return e1.getValue().compareTo(e2.getValue());
                }
            });
    sortedEntries.addAll(map.entrySet());
    return sortedEntries;
}

关于java - 对 Hashmap<String, Object> 内的对象值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10214104/

相关文章:

java - 实现一个包含 k = Date object v = array 的 hash map

java - 将键放入 HashMap 中并以相同的顺序检索

java - 自定义反序列化后出现意外的空值

java - 将 javascript 日期传递给 java

java - 创建带有 FileDescriptor 的 FileReader 有何用处?

javascript - 在 Javascript 中使用 .filter 对数据进行排序

sorting - Elasticsearch:如何获取按匹配分数排序的字段的最高唯一值?

c++ - 使用模板的选择排序函数没有匹配的函数调用(C++)

java - 迭代时比较 HashMap 元素的优化

java - 如何指定正确的返回类型?