`
what?
  • 浏览: 3102 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java对Map排序

阅读更多

Java中对Map(HashMap,TreeMap,Hashtable等)的排序时间
首先简单说一下他们之间的区别:

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

HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null。非同步的。

TreeMap: 能够把它保存的记录根据键(key)排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。TreeMap不允许key的值为null。非同步的。

Hashtable: 与 HashMap类似,不同的是:key和value的值均不允许为null;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。

LinkedHashMap: 保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢。key和value均允许为空,非同步的。


TreeMap默认按key进行升序排序,如果想改变默认的顺序,可以使用比较器:

Map<String,String> map = new TreeMap<String,String>(new Comparator<String>(){
   public int compare(String obj1,String obj2){
    //降序排序
    return obj2.compareTo(obj1);
   }
  });
  map.put("month", "The month");
  map.put("bread", "The bread");
  map.put("attack", "The attack");
 
  Set<String> keySet = map.keySet();
  Iterator<String> iter = keySet.iterator();
  while(iter.hasNext()){
   String key = iter.next();
   System.out.println(key+":"+map.get(key));
  }


如果要对TreeMap按照value的值进行排序,或者对HashMap,Hashtable,LinkedHashMap进行排序,则可以使用Map.Entry<K,V>接口结合List实现:

eg.1 对TreeMap按照value值升序:

List<Map.Entry<String,String>> mappingList = null;
  Map<String,String> map = new TreeMap<String,String>();
  map.put("aaaa", "month");
  map.put("bbbb", "bread");
  map.put("ccccc", "attack");
 
  //通过ArrayList构造函数把map.entrySet()转换成list
  mappingList = new ArrayList<Map.Entry<String,String>>(map.entrySet());
  //通过比较器实现比较排序
  Collections.sort(mappingList, new Comparator<Map.Entry<String,String>>(){
   public int compare(Map.Entry<String,String> mapping1,Map.Entry<String,String> mapping2){
    return mapping1.getValue().compareTo(mapping2.getValue());
   }
  });
 
  for(Map.Entry<String,String> mapping:mappingList){
   System.out.println(mapping.getKey()+":"+mapping.getValue());
  }


eg.2 对HashMap(或Hashtable,LinkedHashMap)按照key的值升序:

List<Map.Entry<String,String>> mappingList = null;
  Map<String,String> map = new HashMap<String,String>();
  map.put("month", "month");
  map.put("bread", "bread");
  map.put("attack", "attack");
 
  //通过ArrayList构造函数把map.entrySet()转换成list
  mappingList = new ArrayList<Map.Entry<String,String>>(map.entrySet());
  //通过比较器实现比较排序
  Collections.sort(mappingList, new Comparator<Map.Entry<String,String>>(){
   public int compare(Map.Entry<String,String> mapping1,Map.Entry<String,String> mapping2){
    return mapping1.getKey().compareTo(mapping2.getKey());
   }
  });
 
  for(Map.Entry<String,String> mapping:mappingList){
   System.out.println(mapping.getKey()+":"+mapping.getValue());
  }
原文链接:http://edu.codepub.com/2010/1030/26837.php

分享到:
评论
1 楼 hetor 2013-02-28  
 

相关推荐

    java实现的map排序

    Java中实现Map排序的方式主要有两种,一种是使用TreeMap,另一种是使用SortedMap接口。HashMap内部元素是无序的,它不会...理解了上述内容后,即使存在个别字词识别问题,也不影响对Java中Map排序方法的理解和应用。

    Java Map按键排序和按值排序

    Java Map按键排序和按值排序 Java Map按键排序和按值排序是Java编程语言中常用的数据结构之一。Map是一种键值对的集合,它可以按照键或值进行排序。下面,我们将详细地介绍Java Map的按键排序和按值排序。 按键...

    Java 对象属性map排序示例

    本示例将详细介绍如何对Java对象属性Map进行排序。 首先,了解Map的基本类型。Java提供了HashMap、TreeMap等实现Map接口的类。HashMap是非排序的,而TreeMap是基于红黑树数据结构,会按照键的自然顺序或者自定义...

    对于java map类排序

    在Java编程语言中,`Map`接口是用于存储键值对的数据结构,它不保证元素的顺序。然而,有时候我们可能需要对Map按照键(key)或者值(value)进行排序。这里,我们讨论的是“对于Java Map类排序”,特别是通过键进行...

    Java Map 按值排序

    总结来说,Java提供了多种方式来对Map按值进行排序,包括使用TreeMap、Collections.sort、Stream API以及Guava库。选择哪种方法取决于项目需求和个人喜好,但在Java 8及更高版本中,Stream API通常被认为是最简洁和...

    java Map转Bean Bean转Map Map排序

    java Map转Bean Bean转Map Map排序

    对Map的key和value进行排序

    对Map的key和value进行排序是Java编程中非常重要的一部分。Map是Java集合框架中的一种数据结构,用于存储键值对。然而,在实际应用中,我们经常需要对Map中的key或value进行排序,以满足特定的业务需求。 对Map中的...

    java map 集合 排序

    四、Map排序示例 1. 对于键排序: ```java for (Map.Entry, Integer&gt; entry : list) { System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue()); } ``` 2. 对于值排序: ```java ...

    java中Map集合的排序方法

    Map中元素存放是无序的 HashMap注意事项: 1,HashMap底层维护一个数组,我们向HashMap中所放置的对象实际上是存储在该数组当中; 2,当向HashMap中put一对键值时,它会根据key的hashCode值计算出一个位置,该位置...

    Map参数按ASCII码排序

    将map按ASCII码排序,适用于将请求头的参数转为map,map内可再含有map,递归排序,无遗漏。运行demo里main方法即可进行验证。

    java map实例,排序

    关于Map的排序,Java 8引入了一个新的API——`Map.Entry`的`comparingByValue()`和`comparingByKey()`方法,这使得我们可以方便地对Map的值或键进行比较和排序。例如,可以使用`map.entrySet().stream().sorted(Map....

    Java Map排序

    实现Map的排序功能,此文档针对Java开发,。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...

    java使用stream对日期排序

    如果日期与非日期数据混合在一起,可以使用`map()`函数将非日期数据转换为日期,然后进行排序: ```java List&lt;MyObject&gt; objects = ...; // 包含日期字段的列表 List&lt;MyObject&gt; sortedObjects = objects.stream...

    java代码-使用java解决list(Map)排序的问题源代码

    java代码-使用java解决list(Map)排序的问题源代码 ——学习参考资料:仅用于个人学习使用!

    java 集合分组与排序

    它直接在原地对列表进行排序,无需额外的流处理。例如: ```java List&lt;Person&gt; people = ...; Collections.sort(people, Comparator.comparing(Person::getName)); ``` - 流API的`sorted()`:适用于任何可...

    对map里面的value进行排序

    而“工具”标签可能意味着博主还介绍了某些可以帮助处理Map排序的第三方库或实用工具。 在1.txt文件中,如果包含的是上述知识点的示例代码或进一步的解释,读者可以通过阅读文件内容来加深理解。总的来说,理解和...

    Java Map 集合类简介

    【Java Map 集合类简介】 在Java的`java.util`包中,集合类扮演着重要的角色,其中List和Map是最为常见的两种。List的实现例如ArrayList和Vector,它们都是可变大小的列表,适合存储和操作各种类型对象的序列。特别...

    java集合MAP三种遍历

    在Java编程语言中,`Map`接口是一种非常重要的数据结构,它存储键值对,并确保每个键都是唯一的。本文将详细介绍Java中Map集合的三种遍历方法及其应用场景、优缺点等,帮助读者更好地理解和掌握Map的使用技巧。 ###...

    对Map按key和value分别排序

    "对 Map 按 key 和 value 分别排序" 摘要:本文主要介绍了 Map 按 key 和 value 分别排序的方法,包括使用 TreeMap 的 key 排序和 value 排序两种方式。 Map 按 key 排序 Map 是键值对的集合接口,它的实现类主要...

    对java中Map集合的讲解

    ### 对Java中Map集合的深入解析 #### 一、Map集合概述 Map是Java集合框架中的一个重要组成部分,它提供了一种存储键值对(key-value pair)数据结构的方式。与List和Set不同,Map并没有直接继承自`Collection`接口,...

Global site tag (gtag.js) - Google Analytics