HashMap与TreeMap按照key和value排序

  1 package com.sort;
  2
  3 import java.util.ArrayList;
  4 import java.util.Collections;
  5 import java.util.Comparator;
  6 import java.util.HashMap;
  7 import java.util.List;
  8 import java.util.Map;
  9 import java.util.Map.Entry;
 10 import java.util.TreeMap;
 11
 12 /**
 13  * Map的排序
 14  *
 15  * @author root
 16  *
 17  */
 18 public class MapSort {
 19     /**
 20      * TreeMap按照key进行排序
 21      */
 22     public static void TreeMapSortByKey() {
 23         Map<String, String> map = new TreeMap<String, String>(new Comparator<String>() {
 24             @Override
 25             public int compare(String o1, String o2) {
 26                 // 降序排列
 27                 return o2.compareTo(o1);
 28             }
 29         });
 30         map.put("c", "ccccc");
 31         map.put("a", "aaaaa");
 32         map.put("b", "bbbbb");
 33         map.put("d", "ddddd");
 34         for (String key : map.keySet()) {
 35             System.err.println("key:" + key + "  value:" + map.get(key));
 36         }
 37     }
 38
 39     /**
 40      * TreeMap按照value排序
 41      */
 42     public static void TreeMapSortByValue() {
 43         Map<String, String> map = new TreeMap<String, String>();
 44         map.put("d", "ccccc");
 45         map.put("b", "bbbbb");
 46         map.put("a", "eeeee");
 47         map.put("c", "ddddd");
 48         // 将map.entrySet()转换成list
 49         List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(map.entrySet());
 50         // 通过比较器来实现排序
 51         Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
 52             @Override
 53             public int compare(Entry<String, String> o1, Entry<String, String> o2) {
 54                 // 升序排序
 55                 return o1.getValue().compareTo(o2.getValue());
 56             }
 57         });
 58         for (Map.Entry<String, String> mapping : list) {
 59             System.out.println(mapping.getKey() + ":" + mapping.getValue());
 60         }
 61     }
 62
 63     /**
 64      * Map按照Key排序
 65      */
 66     public static void MapSortByKey() {
 67         Map<String, String> map = new HashMap<String, String>();
 68         map.put("d", "ccccc");
 69         map.put("b", "bbbbb");
 70         map.put("a", "eeeee");
 71         map.put("c", "ddddd");
 72         // 将map.entrySet()转换成list
 73         List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(map.entrySet());
 74         // 通过比较器来实现排序
 75         Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
 76             @Override
 77             public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {
 78                 // 升序排序
 79                 return o1.getKey().compareTo(o2.getKey());
 80             }
 81         });
 82         for (Map.Entry<String, String> mapping : list) {
 83             System.out.println(mapping.getKey() + ":" + mapping.getValue());
 84         }
 85     }
 86
 87     /**
 88      * Map按照Value排序
 89      */
 90     public static void MapSortByValue() {
 91         Map<String, String> map = new HashMap<String, String>();
 92         map.put("d", "ccccc");
 93         map.put("b", "bbbbb");
 94         map.put("a", "eeeee");
 95         map.put("c", "ddddd");
 96         // 将map.entrySet()转换成list
 97         List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(map.entrySet());
 98         // 通过比较器来实现排序
 99         Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
100             @Override
101             public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {
102                 // 降序排序
103                 return o2.getValue().compareTo(o1.getValue());
104             }
105         });
106         for (Map.Entry<String, String> mapping : list) {
107             System.out.println("key:"+mapping.getKey() + "  value:" + mapping.getValue());
108         }
109     }
110
111     public static void main(String[] args) {
112         // MapSort.TreeMapSortByKey();
113         // MapSort.TreeMapSortByValue();
114         MapSort.MapSortByKey();
115         MapSort.MapSortByValue();
116     }
117 }
时间: 2024-10-07 05:35:29

HashMap与TreeMap按照key和value排序的相关文章

[Java] HashMap、TreeMap、Hashtable排序

Java中对Map(HashMap,TreeMap,Hashtable等)的排序时间 首先简单说一下他们之间的区别: HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度.HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null.非 首先简单说一下他们之间的区别: HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度.HashMap

HashMap与TreeMap源码分析

1. 引言     在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Java这么久,也写过一些小项目,也使用过TreeMap无数次,但到现在才明白它的实现原理).因此本着"不要重复造轮子"的思想,就用这篇博客来记录分析TreeMap源码的过程,也顺便瞅一瞅HashMap. 2. 继承结构 (1) 继承结构 下面是HashMap与TreeMap的继承结构: pu

HashMap、TreeMap、LinkedHashMap、hashtable的区别

Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复     hashMap是hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许有空键值,由于非线程安全,效率上面可能高于Hashtable. HashMap允许将null作为一个entry的key或者value,而hashtable不允许 hashMap把hashtable的contains方法去掉了,改成了containsvalue和containsKey

Java中HashMap和TreeMap的区别深入理解

首先介绍一下什么是Map.在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value.这就是我们平时说的键值对. HashMap通过hashcode对其内容进行快速查找,而 TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的). HashMap 非线程安全 TreeMap 非线程安全 线程安全 在Java里,线程安全一般体

HashMap,LinkedHashMap,TreeMap的区别

Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复.Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的.HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致.如果需要同步,可以用 Collections的synchronizedM

Map接口,hashMap类,TreeMap类,WeakHashMap。

Collection接口之前接触过,每次保存的对象是一个对象,但是在map中保存的是一对对象,是以key->value形式保存的. 定义: public interface Map<K,V> Map.Entry接口. 定义: public static interface Map.Entry<K,V> 常用方法: Map与Map.Entry关系: 常用子类: 以HashMap为例说明基本操作方法:put()增加内容,get()取出内容. 根据键取出内容. map.get(&q

Collections+Iterator 接口 | Map+HashMap+HashTable+TreeMap |

Collections+Iterator 接口 1. Collections 是一个操作 Set.List 和 Map 等集合的工具类 Collections 中提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了对集合对象设置不可变.对集合对象实现同步控制等方法 排序操作: reverse(List):反转 List 中元素的顺序 shuffle(List):对 List 集合元素进行随机排序 sort(List):根据元素的自然顺序对指定 List 集合元素按升序排序 sort(Li

HashMap vs. TreeMap vs. Hashtable vs. LinkedHashMap

HashMap vs. TreeMap vs. Hashtable vs. LinkedHashMap Map is one of the most important data structures. In this tutorial, I will show you how to use different maps such as HashMap, TreeMap, HashTable and LinkedHashMap. Map是数据结构中非常重要的一种.在该文章中,我将会告诉你如何去使

关于HashTable,HashMap和TreeMap的几点心得

刚开始看到HashTable,HashMap和TreeMap的时候比较晕,觉得作用差不多,但是到实际运用的时候又发现有许多差别的.于是自己搜索了一些相关资料来学习,以下就是我的学习沉淀. java为数据结构中的映射定义了一个接口java.util.Map,而HashMap Hashtable和TreeMap就是它的实现类.Map是将键映射到值的对象,一个映射不能包含重复的键:每个键最多只能映射一个一个值. Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直