最新公告
  • 欢迎您光临立业阁,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • java中的map可以根据key排序吗_Java教程


    java中map常用排序方式:按键排序(sort by key), 按值排序(sort by value)。推荐:java视频教程

    1、按键排序

    jdk内置的java.util包下的TreeMap<K,V>既可满足此类需求,向其构造方法 TreeMap(Comparator<? super K> comparator) 传入我们自定义的比较器即可实现按键排序。

    默认升序排序方法:

    import java.util.Map;
    import java.util.Set;
    import java.util.TreeMap;
     
    public class TEST {
     
        public static void main(String[] args) {
            TEST t = new TEST();
            t.sort();
        }
         
        public void sort(){
            Map<String, String> treeMap = new TreeMap<String, String>();
            treeMap.put("c", "ccccc"); 
            treeMap.put("a", "aaaaa"); 
            treeMap.put("b", "bbbbb"); 
            treeMap.put("d", "ddddd"); 
            Set<String> s = treeMap.keySet();
            for (String key : s) { 
                System.out.println(key+" : "+treeMap.get(key)); 
            } 
        }
    }

    输出结果:

    a : aaaaa
    b : bbbbb
    c : ccccc
    d : ddddd

    2、按值排序

    按值排序就相对麻烦些了,貌似没有直接可用的数据结构能处理类似需求,需要我们自己转换一下。

    Map本身按值排序是很有意义的,很多场合下都会遇到类似需求,可以认为其值是定义的某种规则或者权重。

    原理:将待排序Map中的所有元素置于一个列表中,接着使用Collections的一个静态方法 sort(List<T> list, Comparator<? super T> c)

    来排序列表,同样是用比较器定义比较规则。排序后的列表中的元素再依次装入Map,为了肯定的保证Map中元素与排序后的List中的元素的顺序一致,使用了LinkedHashMap数据类型。

    实现代码

    public class MapSortDemo {
    
        public static void main(String[] args) {
    
            Map<String, String> map = new TreeMap<String, String>();
    
            map.put("KFC", "kfc");
            map.put("WNBA", "wnba");
            map.put("NBA", "nba");
            map.put("CBA", "cba");
    
            Map<String, String> resultMap = sortMapByKey(map);    //按Key进行排序
    //        Map<String, String> resultMap = sortMapByValue(map); //按Value进行排序
    
            for (Map.Entry<String, String> entry : resultMap.entrySet()) {
                System.out.println(entry.getKey() + " " + entry.getValue());
            }
        }
        
        /**
         * 使用 Map按value进行排序
         * @param map
         * @return
         */
        public static Map<String, String> sortMapByValue(Map<String, String> oriMap) {
            if (oriMap == null || oriMap.isEmpty()) {
                return null;
            }
            Map<String, String> sortedMap = new LinkedHashMap<String, String>();
            List<Map.Entry<String, String>> entryList = new ArrayList<Map.Entry<String, String>>(
                    oriMap.entrySet());
            Collections.sort(entryList, new MapValueComparator());
    
            Iterator<Map.Entry<String, String>> iter = entryList.iterator();
            Map.Entry<String, String> tmpEntry = null;
            while (iter.hasNext()) {
                tmpEntry = iter.next();
                sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());
            }
            return sortedMap;
        }
    }

    更多java知识请关注liyegejava基础教程栏目。

    以上就是java中的map可以根据key排序吗的详细内容,更多请关注liyege.cn其它相关文章!

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    • 1176会员总数(位)
    • 111858资源总数(个)
    • 2本周发布(个)
    • 0 今日发布(个)
    • 246稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情
    冀ICP备19022365号-1 百度地图

    侵权联系邮箱[email protected]

    立业阁(www.liyege.cn)免费提供wordpress主题模板、dedecms模板、帝国cms模板、小说网站源码、电影网站源码以及网络技术分享,建站源码,小说模板,电影模板,网赚教程,VPS推荐