zoukankan      html  css  js  c++  java
  • Java学习笔记_180713_TreeMap_Comparator重写

    //HashMapTest.java
    package com.fyf.demo06Map;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.TreeMap;
    public class HashMapTest {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Map<String, Integer> scores=new HashMap<>();
    		Map<String, Integer> scores2=new TreeMap<String,Integer>(new MyComparator(scores, true));
    		
    		scores.put("Tom", 60);
    		scores.put("Jerry", 90);
    		scores.put("Morty", 59);
    		scores.put("Ricky", 100);
    		System.out.println("HashMap: "+scores);		
    		
    		scores2.clear();
    		scores2.putAll(scores);	
    		System.out.println("TreeMap: "scores2);
    	}
    
    }
    
    //MyComparator.java
    package com.fyf.demo06Map;
    
    import java.util.Comparator;
    import java.util.Map;
    
    public class MyComparator implements Comparator<String> {
    	Map<String, Integer> map;
    	boolean reverse;
    	public MyComparator(Map<String, Integer> map,boolean reverse){		
    		this.map=map;
    		this.reverse=reverse;
    	}	
    	@Override
    	public int compare(String s1,String s2){
    		if(reverse)
    			return map.get(s1)<map.get(s2)?1:-1;			
    		return map.get(s1)>map.get(s2)?1:-1;		
    	}
    }
    

     代码主要实现了重写TreeMap的比较器然后根据Map Value进行排序的功能,具体思路:

    比较器默认比较的是Key值,正常情况下重写Comparator也是重写比较Key值,考虑到当Map确定时,可以通过Map.get(Key)的方法确定Value的值,此时比较value的值实现TreeMap按照value排序。

    为了确定Map,首先实例化一个HashMap对象,再将它传递给重写后的比较器,通过TreeMap.putAll(Map)即可完成排序。

    比较器重写:

    重载生成方法,传递一个Map参数用于获得map.get(key),一个boolean参数确定是否反向排序

    代码执行结果:

    参考自:https://blog.csdn.net/u011734144/article/details/52384284

  • 相关阅读:
    vue2.0 + vux (六)NewsList 资讯页 及 NewsDetail 资讯详情页
    vue2.0 + vux (五)api接口封装 及 首页 轮播图制作
    vue2.0 + vux (四)Home页
    vue2.0 + vux (三)MySettings 页
    vue2.0 + vux (二)Footer组件
    vue2.0 + vux (一)Header 组件
    vue2 + typescript2 自定义过滤器
    flexible.js + makegrid.js 自适应布局
    vue-router钩子beforeRouteEnter函数获取到this实例
    weex 项目搭建
  • 原文地址:https://www.cnblogs.com/annofyf/p/9305470.html
Copyright © 2011-2022 走看看