分析排序的Map: TreeMap 和 LinkedHashMap

TreeMap:

       一种键值按照自然顺序排序的Map,底层保证有序的结构是红黑

      自然排序:基本数据类型会按照ASCII码表排序,String类会按照字典序排序。

      也可以自己自定义排序,看TreeMap的构造函数

 public TreeMap(Comparator<? super K> comparator) {
        this.comparator = comparator;
    }

    可以传入一个Comparator比较器,自定义排序

     

public class Demo {

	public static void main(String[] args) {
     
	   Map<Goods, String> map = new TreeMap(new Comparator<Goods>() {

		@Override
		public int compare(Goods o1, Goods o2) {
			if(o1.getPrice() > o2.getPrice()) {
				return 1;
			}else if(o1.getPrice() < o2.getPrice()) {
				return -1;
			}
			return 0;
		}
	});
	   
	   Goods goods = new Goods("b", 23);
	   Goods goods2 = new Goods("a", 24);
	   map.put(goods, "1");
	   map.put(goods2, "2");
	  
	   
	   for(java.util.Map.Entry<Goods, String> entry : map.entrySet()) {
		    System.err.println("键:" + entry.getKey() +"   值:"+ map.values());
	   }
           
	}
	

}

LinkedHashMap

      可以按照键的插入顺序和访问顺序进行排序的Map,是基于HashMap和双向链表来实现的

     1. 下面这个例子就是展示  LinkedHashMap按照插入顺序进行输出结果的Demo

public class Demo {

	public static void main(String[] args) {
       Map<String, String> map = new LinkedHashMap<>();
       map.put("b", "21");
       map.put("a", "212");
       map.put("c", "32");
       
       map.get("a");
       for(Map.Entry<String,String> entry : map.entrySet()) {
    	   System.err.println(entry.getKey()+";"+entry.getValue());
       }
    /*  输出结果
     *  b;21
         a;212
         c;32*/
	}
}
发布了29 篇原创文章 · 获赞 34 · 访问量 8143

猜你喜欢

转载自blog.csdn.net/weixin_39634532/article/details/103106257