个人认为主要还是注意ArrayList( Collection c) 这个构造方法,然后对这个List排序即可!
public static void main(String[] args) { Map map = new HashMap(); map.put("First", 20); map.put("Second", 10); map.put("Third", 30); List arrayList = new ArrayList(map.entrySet()); //注意构造函数 //排序前 for(Iterator it = arrayList.iterator();it.hasNext();){ Map.Entry entry = (Map.Entry)it.next(); System.out.print(entry.getKey()+":"+entry.getValue()+" "); } Collections.sort(arrayList, new TariffComparator.TariffMapComparator()); System.out.println(); //排序后 for(Iterator it = arrayList.iterator();it.hasNext();){ Map.Entry entry = (Map.Entry)it.next(); System.out.println(entry.getKey()+":"+entry.getValue()); } }
排序方法:
public class TariffComparator { public static class TariffMapComparator implements Comparator{ public int compare(Object o1, Object o2) { Map.Entry obj1 = (Map.Entry)o1; Map.Entry obj2 = (Map.Entry)o2; return obj1.getValue().toString().compareTo(obj2.getValue().toString()); } } }
结果:
List dateList = new ArrayList(dateMap.entrySet()); Collections.sort(dateList, new EmailComparator.MapComparator()); public static class ComparatorByKey implements Comparator{ public int compare(Object o1, Object o2) { Map.Entry m1 = (Map.Entry)o1; Map.Entry m2 = (Map.Entry)o2; Integer i1 = (Integer)m1.getKey(); Integer i2 = (Integer)m2.getKey(); return i1.compareTo(i2); } }
或:
public class TestMapSortByValue { public static void main(String[] args) { Map<String, Integer> map = new HashMap<String, Integer>(); map.put("d",4); map.put("a",1); map.put("c",3); map.put("e",5); map.put("b",2); //排序前 System.out.println("before sort"); for(Map.Entry<String, Integer> entry:map.entrySet()){ System.out.println(entry.getKey()+"->"+entry.getValue()); } System.out.println(); //将map转成list List<Map.Entry<String, Integer>> infos = new ArrayList<Map.Entry<String, Integer>>(map.entrySet()); //对list排序,实现新的比较器 Collections.sort(infos, new Comparator<Map.Entry<String, Integer>>(){ @Override public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { return o1.getValue() - o2.getValue(); } }); //申明新的有序 map,根据放入的数序排序 Map<String, Integer> lhm = new LinkedHashMap<String, Integer>(); //遍历比较过后的map,将结果放到LinkedHashMap for(Map.Entry<String, Integer> entry:infos){ lhm.put(entry.getKey(), entry.getValue()); } //遍历LinkedHashMap,打印值 System.out.println("after sort"); for(Map.Entry<String, Integer> entry:lhm.entrySet()){ System.out.println(entry.getKey()+"->"+entry.getValue()); } } }
法二:
很少有人会直接使用TreeMap,为什么,当你在TreeMap结构中“put”或“remove”元素时,因为需要排序从而需要一些开销,这会影响到程序的性能,一般是我们先使用HashMap组织好数据,当需要使用关键字排序的时候,再把HashMap作为参数传入.
Map treeMap = new TreeMap(Map m).
TreeMap是一个基本红黑树的实现,它会排序他的key.
...
相关推荐
Java中实现Map排序的方式主要有两种,一种是使用TreeMap,另一种是使用SortedMap接口。HashMap内部元素是无序的,它不会记录插入顺序,也不保证顺序。如果需要有序的Map,可以使用TreeMap,它会根据键的自然顺序进行...
Java Map按键排序和按值排序是Java编程语言中常用的数据结构之一。Map是一种键值对的集合,它可以按照键或值进行排序。下面,我们将详细地介绍Java Map的按键排序和按值排序。 按键排序(sort by key) Java中的...
总结来说,Java中对Map进行排序通常涉及到HashMap与TreeMap的选择,以及Comparator的使用。对于对象属性Map的排序,需要先对Map进行排序,然后可能还要对对象列表进行排序。通过理解这些概念,开发者能够灵活地控制...
Map中元素存放是无序的 HashMap注意事项: 1,HashMap底层维护一个数组,我们向HashMap中所放置的对象实际上是存储在该数组当中; 2,当向HashMap中put一对键值时,它会根据key的hashCode值计算出一个位置,该位置...
总结来说,Java中的`Map`接口不能直接排序,但可以通过使用`SortedMap`接口的实现如`TreeMap`来实现排序。`TreeMap`可以根据键的自然顺序或提供的比较器对键进行排序。在给定的代码中,通过`mapSortByKey`方法实现了...
本文将详细介绍如何在Java中实现Map按值排序的几种方法。 1. 使用TreeMap TreeMap是Java中实现Map接口的一个类,它内部使用红黑树数据结构,可以按照键或值自然排序。如果我们要根据值排序,可以在创建TreeMap时...
java Map转Bean Bean转Map Map排序
四、Map排序示例 1. 对于键排序: ```java for (Map.Entry, Integer> entry : list) { System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue()); } ``` 2. 对于值排序: ```java ...
Java中的Map接口是Java集合框架的重要组成部分,它用于存储键值对的数据结构,其中每个键都是唯一的,并且与一个值相关联。Map集合不同于List,因为它不维护元素的顺序,而是通过键来访问其对应的值。本文将详细介绍...
将map按ASCII码排序,适用于将请求头的参数转为map,map内可再含有map,递归排序,无遗漏。运行demo里main方法即可进行验证。
Java中的Map接口是Java集合框架的重要组成部分,它用于存储键值对的数据结构。Map不同于List,List是以索引来访问元素,而Map则是通过键(key)来查找对应的值(value)。Map接口定义了一系列方法,使得我们可以对...
在Java编程语言中,Map接口是集合框架的重要组成部分,它提供了键值对的存储功能。在Java中,Map有多种实现类,每种实现类有不同的特性和用途。本篇文章将详细探讨`HashMap`, `LinkedHashMap`, `TreeMap`, 和 `...
实现Map的排序功能,此文档针对Java开发,。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...
在Java编程语言中,Map接口是集合框架的重要组成部分,它提供了键值对(key-value pairs)的存储方式。Map不是列表或数组,而是允许我们通过一个键(key)来查找对应的值(value)。本篇文章将深入讲解Map的使用实例...
下面我们将深入探讨如何在Java中实现集合的分组与排序。 1. **集合分组**: 集合分组通常涉及到`GroupingBy`操作,这在Java 8引入的流(Stream)API中得到了很好的支持。`Collectors.groupingBy`方法允许我们将...
对Map的key和value进行排序是Java编程中非常重要的一部分。Map是Java集合框架中的一种数据结构,用于存储键值对。然而,在实际应用中,我们经常需要对Map中的key或value进行排序,以满足特定的业务需求。 对Map中的...
Map是Java中最天才的设计,使用起来也很灵活,该类总结了Map通过key和value进行升序和降序排序,Map的两种遍历的公共方法以及上面功能的测试方法
Java提供了多种Map实现,如HashMap、TreeMap、LinkedHashMap等,每种实现有不同的性能特性和排序规则。HashMap是无序的,基于哈希表实现;TreeMap是有序的,基于红黑树实现;LinkedHashMap保持插入顺序或者访问顺序...
### Java中的Map接口详解 #### 一、Map接口概述 Map接口是Java集合框架中的一个核心接口,它并不属于`Collection`接口体系。Map的主要功能是存储键值对(key-value pairs),其中键(key)不允许重复,而值(value...