`

Hashmap 通过对VALUE排序

 
阅读更多
对KEY的排序比较简单 直接用treeMap就可以,通过构造方式或者是KEY值类实现Comparable 接口也可以

@Test
		public void TestThree()
		{
			//对MAP的VALUE值进行排序 简单来说就在TREEMAP对KEY排序的基础上 通过KEY拿VALUE 然后在进行排序
				HashMap<String,Integer> hashmap = new HashMap<String,Integer>();
				hashmap.put("two", 2);
				hashmap.put("one", 1);
				hashmap.put("aa", 3);
			//注入排序MAP
			HashMapSort hashmapsort  = 	 new HashMapSort(hashmap);
			
			TreeMap<String,Integer> sortaftertreemap = new TreeMap<String,Integer>(hashmapsort);
			sortaftertreemap.putAll(hashmap);
			
			Set<Entry<String,Integer>> treehampset =  hashmap.entrySet();
			Iterator<Entry<String,Integer>>  treemapiterator  = treehampset.iterator();
			while(treemapiterator.hasNext())
			{
				Entry<String,Integer>  hasp = treemapiterator.next();
				System.out.println("treemap3-------"+hasp.getKey());
				System.out.println("treemap3-------"+hasp.getValue());
			}
			
			sortaftertreemap.put("fs", 411);
			Set<Entry<String,Integer>> sortaftertreemapset =  sortaftertreemap.entrySet();
			Iterator<Entry<String,Integer>>  sortaftertreemapsetiterator  = sortaftertreemapset.iterator();
			while(sortaftertreemapsetiterator.hasNext())
			{
				Entry<String,Integer>  hasp = sortaftertreemapsetiterator.next();
				System.out.println("treemapaftersort-------"+hasp.getKey());
				System.out.println("treemapaftersort-------"+hasp.getValue());
			}
			
			HashMap<String,Integer> hashmap2 = new HashMap<String,Integer>(sortaftertreemap);
			printMap(hashmap2);
			//还有一种是变成LIST 然后通过COLLECTIONS.SORT(LIST,Comparator) 进行排序 这个比较常见 这个地方就不写了
			
		}


//排序类
class HashMapSort implements Comparator<String>
		{
			private Map<String,Integer> map = null;
			
			public HashMapSort(Map<String,Integer> map)
			{
				this.map = map;
			}
			
			public int compare(String o1, String o2) {
				// TODO Auto-generated method stub	
				if(!map.containsKey(o1)||!map.containsKey(o2))
				{
					return o1.hashCode() - o2.hashCode();
				}			
				return map.get(o1)- map.get(o2);
			}
			
		}
分享到:
评论

相关推荐

    Hashmap 通过对VALUE排序 源代码

    在博文“HashMap通过对VALUE排序 源代码”中,作者可能详细介绍了如何实现上述方法,尤其是自定义Comparator来对HashMap的值进行排序。遗憾的是,由于没有提供具体的博客内容,我们无法给出更详细的源代码分析。不过...

    HASHMAP排序功能描述

    在某些场景下,我们可能需要对HashMap进行排序,例如按照key的值或key的自然顺序进行排序。本文将详细介绍如何对HashMap进行排序以及相关的知识点。 **1. HashMap的特点** HashMap的核心特点是其内部通过哈希函数来...

    对map里面的value进行排序

    然而,有时我们需要对Map中的值进行排序,例如按照value的大小进行升序或降序排列。这篇博客"对map里面的value进行排序"探讨的就是如何实现这一需求。 首先,我们了解Map接口的基本概念。Map接口不直接支持排序,...

    Java Map 按照Value排序的实现方法

    以下是关于Java Map按照Value排序的实现方法的详细说明: 1. **HashMap**: - HashMap是基于哈希表实现的,它不保证元素的顺序,插入顺序和遍历顺序可能不同,而且不支持排序。 2. **TreeMap**: - TreeMap基于...

    JCF(List、Set、Map)学习,实现了<key,value>按value排序噢

    标题中提到的“JCF(List、Set、Map)学习,实现了,value&gt;按value排序”是一个关键点,我们将深入探讨这个话题。 首先,让我们了解List、Set和Map的区别。List是有序的集合,允许重复元素,并且可以保持插入顺序;Set...

    对Map按key和value分别排序

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

    java程序-HashMap排序

    先根据value的值从小到大排序,value相同再根据key的字母顺序来排序

    Android 对Map按key和value分别排序的实例

    当需要对Map中的数据进行排序时,通常有两种情况:按key排序和按value排序。本文将详细介绍如何在Android环境下对Map进行这两种排序。 首先,我们来讨论按key排序。TreeMap是一个基于红黑树实现的Map,它可以根据...

    hashmap.zip

    在Java编程语言中,HashMap是一种常用的集合类,它实现了Map接口,用于存储键值对(key-value pairs)。HashMap的工作基于哈希表数据结构,提供快速的插入、删除和查找操作。下面我们将深入探讨HashMap的实现原理,...

    用HashMap写的一个小Demo用来写游戏排名的一种方法

    在Java编程中,HashMap是...这涉及到HashMap的基本操作、Stream API的使用以及如何对数据进行排序等Java编程核心知识点。在实际开发中,这样的技巧不仅可以应用于游戏排名,还可以扩展到其他需要存储和排序数据的场景。

    ArrayList,HashMap

    HashMap则是一个散列表,用于存储键值对(key-value pairs)。它通过散列函数将键映射到数组的特定位置,从而实现了快速的查找、插入和删除操作。在理想情况下,HashMap的平均时间复杂度为O(1),但最坏情况下可能...

    HashMap与HashTable和HashSet的区别

    本文将重点分析这三种数据结构之间的区别,特别是针对`HashTable`不支持空键值对而`HashMap`支持这一点进行深入探讨。 #### 二、HashTable `HashTable`是基于哈希表实现的一个线程安全的`Map`容器,它不允许`key`...

    hashmap 集合

    HashMap是Java集合框架的一部分,位于`java.util`包下,实现了Map接口,用于存储键值对(key-value pairs)。在深入理解HashMap之前,我们先简单回顾一下Java集合的基本概念。 Java集合框架包括Set、List和Map三个...

    HashMap底层原理.pdf

    Node[] table是HashMap的核心,它是一个Node数组,数组的每一个元素都是一个Node对象,每个Node对象可以包含一个key-value键值对。Node是HashMap的内部类,它实现了Map.Entry,V&gt;接口。 HashMap的扩容机制在JDK 1.8...

    java8 stream 操作map根据key或者value排序的实现

    在 Java8 中,我们可以使用 Stream 操作对 Map 根据 Value 排序。下面是一个示例代码: ```java Map, BigDecimal&gt; map = new HashMap(); map.put("one", 0.08); map.put("two", 0.1); map.put("three", 0.2); map....

    电话本管理系统HashMap实现

    Map接口存储键值对(key-value pairs),而HashMap则使用哈希表数据结构来实现,提供平均时间复杂度为O(1)的插入、删除和查找操作。哈希表通过计算对象的哈希码来定位数据,这使得访问速度非常快。 首先,我们需要...

    Java Map 按key排序和按Value排序的实现方法

    - 对于value排序,所有value必须是可比较的,即它们都实现了Comparable接口,或者你提供了合适的Comparator,否则`Collections.sort()`方法会抛出`ClassCastException`。 总的来说,Java Map的排序可以通过选择...

    java的Map集合中按value值进行排序输出的实例代码

    在本例中,我们将详细探讨如何在Java中对Map集合按value值进行排序,并给出一个具体的实例代码。 首先,Map接口有多种实现类,如HashMap、TreeMap等。这里我们以HashMap为例,因为它是Java中最常用的Map实现,但它...

    JAVA中HashMap的用法.docx

    由于不同的键可能会生成相同的哈希码,所以可能需要处理哈希冲突,HashMap通过链地址法解决这个问题,即在同一个桶内使用链表连接所有哈希冲突的键值对。当查找某个键对应的值时,HashMap首先计算键的哈希码,然后在...

Global site tag (gtag.js) - Google Analytics