0 0

怎么将HASHMAP里的内容,按要求进行排序5

public class Test{
   
   public static void main(String[] args) {
//map里放的是姓名,值是出现在的次数
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("lisi", 5);
map.put("lisi1", 1);
map.put("lisi2", 3);
map.put("lisi3", 9);
}
//进行排序,排序之后的输出
// map.put("lisi1", 1);
// map.put("lisi2", 3);
// map.put("lisi", 5);
// map.put("lisi3", 9);

}
2011年8月22日 09:54

6个答案 按时间排序 按投票排序

0 0

采纳的答案

你说的按要求排序,应该是有一些自定义规则排序吧,假如要通过值来排序可以用以下方法:
 
  

   public static void main(String[] args) {
		Map<String, Integer> map = new HashMap<String, Integer>();

		map.put("lisi", 5); 
		map.put("lisi1", 1); 
		map.put("lisi2", 3); 
		map.put("lisi3", 9); 

		List<Map.Entry<String, Integer>> infoIds = new ArrayList<Map.Entry<String, Integer>>(
				map.entrySet());
		System.out.println("--------------排序前--------------");
		for (int i = 0; i < infoIds.size(); i++) {
			String id = infoIds.get(i).toString();
			System.out.println(id);
		}
		// 排序
		Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {
			public int compare(Map.Entry<String, Integer> o1,
					Map.Entry<String, Integer> o2) {
				return ( o1.getValue()-o2.getValue());
			}
		});
		System.out.println("--------------排序后--------------");
		for (int i = 0; i < infoIds.size(); i++) {
			Entry<String,Integer> ent=infoIds.get(i);
			System.out.println(ent.getKey()+"="+ent.getValue());
			
		}
		

	}
   
   

2011年8月22日 10:33
0 0

LinkedHashMap 只能保证插入的顺序 不能排序 AngelAndAngel 的方法很好
sc1333的方法是按key排序 楼主要的是value排序

另外 你可以这样

import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class Test {

	public static void main(String[] args) {
		
		Map<Order, Integer> map = new TreeMap<Order, Integer>();
		map.put(new Order("lisi", 5), 5); 
		map.put(new Order("lisi1", 1), 1); 
		map.put(new Order("lisi2", 3), 3); 
		map.put(new Order("lisi3", 9), 9); 
		
		
		Set<Map.Entry<Order, Integer>> set = map.entrySet();
		for (Map.Entry<Order, Integer> entry : set) {
			System.out.print(entry.getKey().key+ "--");
			System.out.println(entry.getValue());
		} 
	}
}

class Order implements Comparable<Order> {
	String key;
	int count;
	
	public Order(String key, int count) {
		this.key = key;
		this.count = count;
	}

	@Override
	public int compareTo(Order o) {
		return (count > o.count) ? 1 : count == o.count ? 0 : -1;
	}

}


不过还有有点多余 没有AngelAndAngel 的方法好

2011年8月22日 10:59
0 0

首先要明确一点, HashMap是没有顺序的,
如果一定要用HashMap, 可以参考以下方法, 此处写出思路:

在读取MAP的时候这样做:
1. 反射map去除所有key, 存入List或Array. 注(list操作较方便, 可以直接toArray)
2. 利用Array.sort()方法进行排序.
3. 按排序后的顺序取出key, 然后通过key取Map, 即可获得排序后的Map

简单的代码示例(无验证):

List list = new ArrayList(map.keySet());
Object[] ary = list.toArray();
Arrays.sort(ary);
list = Arrays.asList(ary);
for (Object o : list) {
System.out.println(map.get(o));
}

2011年8月22日 10:48
0 0

似乎只有对Key进行排序的,对Value的有吗?

2011年8月22日 10:04
0 0

HashMap 不能排序,可用楼上的方法解决

2011年8月22日 10:03
0 0

用LinkedHashMap就可以了,这个是有序的Map

2011年8月22日 10:00

相关推荐

    HASHMAP排序功能描述

    HashMap排序并不是HashMap本身的功能,而是通过其他手段实现的。根据实际需求,可以选择使用LinkedHashMap或通过转换和排序来达到目的。理解这些方法及其背后的原理,可以帮助我们在编程中更灵活地处理数据结构和...

    HashMap排序

    ### HashMap排序方法详解 在Java开发中,`HashMap`是一种非常常见的数据结构,它通过键值对的形式存储数据。然而,由于`HashMap`是基于哈希表实现的,所以它并不能保证元素的顺序。这就意味着如果需要按照某种特定...

    Hashmap 通过对VALUE排序 源代码

    接着,我们将HashMap的entrySet转换为ArrayList,并使用这个Comparator对entrySet进行排序。最后,我们遍历排序后的entrySet,打印出键值对,此时的值是按降序排列的。 通过这样的方式,我们可以实现对HashMap值的...

    HashMap集合排序

    运行上述代码,将会按照速度升序,相同速度下型号字母序进行排序输出。注意,`TreeMap` 默认按照自然顺序排序,即数字和字符串的默认排序方式。如果需要自定义排序规则,可以提供一个 `Comparator` 实例给 `TreeMap`...

    自己写的一个随机数的例子,采用hashmap排序

    标题中的“自己写的一个随机数的例子,采用hashmap排序”表明这是一个关于生成随机数并使用HashMap进行排序的程序示例。在这个例子中,我们将探讨如何生成随机数、HashMap的数据结构以及其排序机制。 首先,随机数...

    java程序-HashMap排序

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

    Java HashMap两种简便排序方法解析

    在Java中,要对HashMap进行排序,首先需要得到HashMap中的键的集合(keySet),然后将其转换为数组,最后使用Arrays.sort()进行排序。下面是示例代码: Set set = phone.keySet(); Object[] arr = set.toArray(); ...

    Android中实现HashMap排序的方法

    HashMap排序是数据结构与算法中常见的一种排序算法。本文即以Android平台为例来实现该算法。 具体代码如下: public static void main(String[] args) { Map&lt;String&gt; map = new HashMap(); map.put(lisi, 5); ...

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

    为了实现排名,我们需要将HashMap转换为List,并根据值(分数)进行排序。这可以通过Java 8的Stream API实现: ```java List, Integer&gt;&gt; sortedEntries = gameRanking.entrySet().stream() .sorted(Map.Entry....

    ArrayList,HashMap

    HashMap不保证元素的顺序,如果需要保持插入顺序或根据特定规则排序,应考虑使用LinkedHashMap。 ArrayList和HashMap的使用场景有所不同。ArrayList适合于需要频繁进行随机访问且元素顺序重要的情况,比如作为数据...

    treemap treeset hashset hashmap 简要介绍

    这些集合类各自有着独特的特性和应用场景,下面将对它们进行详细介绍。 ### TreeMap `TreeMap`是基于红黑树(Red-Black tree)实现的Sorted Map(排序映射)。它实现了`Map`接口,并且提供了一些额外的方法,如`...

    对map里面的value进行排序

    这段代码首先通过`entrySet().stream()`将Map转换为流,然后使用`sorted(Map.Entry.comparingByValue())`根据value进行排序。最后,使用`Collectors.toMap()`收集到一个新的LinkedHashMap中,以保持排序顺序。这里...

    HashMap,HashTable,LinkedHashMap,TreeMap的区别

    本文将对这四种 Map 实现类进行比较和分析。 HashMap HashMap 是 Java 中最常用的 Map 实现类,它根据键的 HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap 最多只允许一条记录的键...

    java中HashMap,LinkedHashMap,TreeMap,HashTable的区别

    本文将详细分析四种常用的`Map`实现类:`HashMap`, `LinkedHashMap`, `TreeMap`以及`HashTable`之间的区别。 #### 1. HashMap `HashMap`是一种基于哈希表实现的`Map`接口,提供了一个非同步的、允许使用`null`键和...

    HashMap底层原理.pdf

    HashMap是Java中非常常见的一种数据结构,主要用于存储键值对,其核心原理是通过哈希算法将键映射到数组中的位置来实现快速访问。本文将详细介绍HashMap的底层原理,包括其内部实现结构、关键字段的作用、以及JDK ...

    hashmap 集合

    在实际项目中,对HashMap进行优化主要涉及以下几个方面: 1. 初始化容量:避免HashMap自动扩容,可以预估数据量并设定合适的初始容量,如`new HashMap(预计数量 * 2)`,这样可以减少扩容带来的额外开销。 2. 键值...

    HashMap与HashTable和HashSet的区别

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

    java实现的map排序

    然后通过一个自定义的方法mapSortByKey将HashMap中的元素按照键的顺序进行排序。mapSortByKey方法中,首先从传入的未排序的Map中获取键的Set,并将其转换为数组。然后使用Arrays.sort()对这些键进行排序。排序完成后...

    电话本管理系统HashMap实现

    本文将深入探讨如何使用HashMap来构建一个电话本管理系统,并通过源码分析增强理解。 HashMap是Java集合框架中的一个核心类,它实现了Map接口。Map接口存储键值对(key-value pairs),而HashMap则使用哈希表数据...

Global site tag (gtag.js) - Google Analytics