Map根据key或value排序

简介: Map根据key排序

1.第一种方法
首先定义好一个传key的比较器对象来构造TreeMap

    Map<String,Object> mapping = new TreeMap<>(new MyComparator());
    mapping.put("afieldName","特征名称");
    mapping.put("std","方差");
    mapping.put("min","最小值");
    mapping.put("avg","平均值");
    mapping.put("nanCount","缺失值");
    mapping.put("max","最大值");
    mapping.put("skewness","偏度");
    mapping.put("kurtosis","峰度");
    mapping.put("standardDeviation","标准差");
    System.out.println("mapping="+mapping);
 
 

定义key的比较器

class MyComparator implements Comparator {

public int compare(String o1, String o2) {
    return o1.compareTo(o2);
}

}

1.第二种方法
Map先存放数据,之后再进行排序

Map根据key的值进行排序

/**
 * Map根据key的值进行排序
 *
 * @param map
 * @return
 */
public static Map<String,Object> sortMapByKey(Map<String,Object> map){
    List<Map.Entry<String,Object>> entryList = new ArrayList<>(map.entrySet());
    entryList.sort(Comparator.comparing(o-> o.getKey()));
    //遍历排序好的list,一定要放进LinkedHashMap,因为只有LinkedHashMap是根据插入顺序进行存储
    LinkedHashMap<String,Object> linkedHashMap = new LinkedHashMap<>();
    for(Map.Entry<String,Object> entry : entryList){
        linkedHashMap.put(entry.getKey(),entry.getValue());
    }
    return linkedHashMap;
}

Map根据value的值进行排序

/**

 * Map根据value的值进行排序
 *
 * @param map
 * @return
 */
public static Map<String,Object> sortMapByValue(Map<String,Object> map){
    List<Map.Entry<String,Object>> entryList = new ArrayList<>(map.entrySet());
    entryList.sort(Comparator.comparing(o-> o.getValue().toString()));
    //遍历排序好的list,一定要放进LinkedHashMap,因为只有LinkedHashMap是根据插入顺序进行存储
    LinkedHashMap<String,Object> linkedHashMap = new LinkedHashMap<>();
    for(Map.Entry<String,Object> entry : entryList){
        linkedHashMap.put(entry.getKey(),entry.getValue());
    }
    return linkedHashMap;
}

进行代码测试

定义Map测试

public static void main(String[] args) {
    //传进来一个key的比较器对象来构造treemap
    Map<String,Object> mapping = new TreeMap<>();
    mapping.put("fieldName","特征名称");
    mapping.put("std","方差");
    mapping.put("min","最小值");
    mapping.put("avg","平均值");
    mapping.put("nanCount","缺失值");
    mapping.put("max","最大值");
    mapping.put("skewness","偏度");
    mapping.put("kurtosis","峰度");
    mapping.put("standardDeviation","标准差");
    System.out.println("-------------1-------------");

    //按key排序
    Map<String,Object> objectMapKey = sortMapByKey(mapping);
    System.out.println(objectMapKey);
    System.out.println("-------------2-------------");

     //按value排序
    Map<String,Object> objectMap = sortMapByValue(mapping);
    System.out.println(objectMap);
}

相关文章
|
20天前
|
存储 Java API
Java交换map的key和value值
通过本文介绍的几种方法,可以在Java中实现Map键值对的交换。每种方法都有其优缺点,具体选择哪种方法应根据实际需求和场景决定。对于简单的键值对交换,可以使用简单遍历法或Java 8的Stream API;对于需要处理值不唯一的情况,可以使用集合存储或Guava的Multimap。希望本文对您理解和实现Java中的Map键值对交换有所帮助。
24 1
|
1月前
|
前端开发 JavaScript 索引
JavaScript 数组常用高阶函数总结,包括插入,删除,更新,反转,排序等,如map、splice等
JavaScript数组的常用高阶函数,包括遍历、插入、删除、更新、反转和排序等操作,如map、splice、push、pop、reverse等。
18 0
|
5月前
|
存储 Java API
探讨Java中交换Map的Key和Value值的技术
探讨Java中交换Map的Key和Value值的技术
40 2
|
5月前
|
存储 缓存 Java
Java交换map的key和value值
在Java中,直接交换`Map`的key和value是不允许的,因为key是唯一的且不可变。不过,可以通过创建新`Map`实现交换:将原`Map`的value作为新key,key作为新value。注意,如果原`Map`有重复value或null,需额外处理。以下是一个代码示例,展示了如何在value唯一且非null的情况下交换`Map`的key和value。对于重复value或null值的情况,可以使用`List`存储多个key或忽略null值。在实际应用中,`Map`常用于缓存、配置管理、数据库结果映射等多种场景。
63 1
|
6月前
|
Java API
List转Map(id为key,list为value)
List转Map(id为key,list为value)
260 0
|
2月前
|
Go 定位技术 索引
Go 语言Map(集合) | 19
Go 语言Map(集合) | 19
|
2月前
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
|
1月前
|
存储 分布式计算 Java
Stream很好,Map很酷,但答应我别用toMap():Java开发中的高效集合操作
在Java的世界里,Stream API和Map集合无疑是两大强大的工具,它们极大地简化了数据处理和集合操作的复杂度。然而,在享受这些便利的同时,我们也应当警惕一些潜在的陷阱,尤其是当Stream与Map结合使用时。本文将深入探讨Stream与Map的优雅用法,并特别指出在使用toMap()方法时需要注意的问题,旨在帮助大家在工作中更高效、更安全地使用这些技术。
42 0
|
3月前
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set
|
3月前
|
Java
【Java集合类面试二十二】、Map和Set有什么区别?
该CSDN博客文章讨论了Map和Set的区别,但提供的内容摘要并未直接解释这两种集合类型的差异。通常,Map是一种键值对集合,提供通过键快速检索值的能力,而Set是一个不允许重复元素的集合。