`
wsmajunfeng
  • 浏览: 498281 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hashmap排序

 
阅读更多
一、按key进行排序
package com.jack.veloctiy.utils;

import java.util.Arrays;
import java.util.HashMap;

/**
*
*/
public class SortByKeyOfMap {

public static void main(String[] args) {

@SuppressWarnings("serial")
HashMap<String, String> datas = new HashMap<String, String>() {

{
put("a", "Winter Lau");
put("b", "Yier");
put("c", "Nothing");
put("d", "Zolo");
}
};
Object[] key = datas.keySet().toArray();
Arrays.sort(key);
for (int i = 0; i < key.length; i++) {
System.out.println(datas.get(key[i]));
}
}
}
 二、按value进行排序
package com.jack.veloctiy.utils;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.TreeMap;

/**
*
*/
public class SortByValueOfMap {

public static void main(String[] args) {

@SuppressWarnings("serial")
HashMap<String, String> datas = new HashMap<String, String>() {

{
put("Winter Lau", "a");
put("Yier", "b");
put("Nothing", "c");
put("Zolo", "d");
}
};

ByValueComparator bvc = new ByValueComparator(datas);

// 第一种方法
TreeMap<String, String> sorted_map = new TreeMap<String, String>(bvc);
sorted_map.putAll(datas);

for (String name : sorted_map.keySet()) {
System.out.printf("%s -> %s\n", name, datas.get(name));
}

// 第二种方法
List<String> keys = new ArrayList<String>(datas.keySet());
Collections.sort(keys, bvc);
for (String key : keys) {
System.out.printf("%s -> %s\n", key, datas.get(key));
}
}

/**
* 比较器,按照value的自然顺序升序排列
*
* @author Administrator
*/
static class ByValueComparator implements Comparator<String> {

HashMap<String, String> base_map;

public ByValueComparator(HashMap<String, String> base_map) {
this.base_map = base_map;
}

public int compare(String arg0, String arg1) {
if (!base_map.containsKey(arg0) || !base_map.containsKey(arg1)) {
return 0;
}

if (base_map.get(arg0).compareToIgnoreCase(base_map.get(arg1)) > 0) {
return 1;
} else if (base_map.get(arg0).compareToIgnoreCase(base_map.get(arg1)) == 0) {
return 0;
} else {
return -1;
}
}
}
}
分享到:
评论

相关推荐

    HashMap排序

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

    HASHMAP排序功能描述

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

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

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

    Android中实现HashMap排序的方法

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

    java程序-HashMap排序

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

    Hashmap 通过对VALUE排序 源代码

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

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

    Java HashMap两种简便排序方法解析 Java HashMap是一种常用的数据结构,然而,它的储存是没有顺序的,按照key的HashCode实现。这使得在 certainsituations下的排序变得非常重要。下面,我们将介绍两种简便的排序...

    ListHashMap排序

    对List集合进行排序 对集合中的某个属性进行排序

    HashMap集合排序

    `HashMap` 提供快速存取但无序,而 `TreeMap` 可以自动排序。在这个例子中,我们利用 `TreeMap` 的排序功能,结合自定义的 `Car` 类,实现了按照速度和型号双重排序的功能。通过这种方式,我们可以更方便地管理和...

    Map排序

    1. HashMap排序: HashMap本身不支持排序,但如果需要排序,可以先将HashMap转换为List(例如List, V&gt;&gt;),然后使用Collections.sort()方法对List进行排序。排序的关键在于提供一个自定义的Comparator来决定比较规则...

    ordered-map:按值排序的HashMap

    `ordered-map`,正如其名,是一个按值排序的HashMap。在传统的HashMap中,元素的位置是不确定的,因为它们的存储基于哈希函数的结果,这通常会导致元素在内存中的随机分布。然而,`ordered-map`提供了一种按特定顺序...

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

    在这个"用HashMap写的一个小Demo用来写游戏排名的一种方法"的示例中,我们很可能会看到如何利用HashMap来组织游戏分数并进行排序,以实现一个简单的游戏排名系统。 HashMap的特点在于它的键(key)是唯一的,每个键...

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

    - **性能**:尽管`TreeMap`提供排序功能,但它的时间复杂度通常是O(log n),因此在某些情况下可能比`HashMap`和`LinkedHashMap`慢。 #### 4. HashTable `HashTable`是一种古老的`Map`实现,它的设计是为了确保线程...

    ArrayList,HashMap

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

    HashMap,HashTable,LinkedHashMap,TreeMap的区别

    HashMap, HashTable, LinkedHashMap, TreeMap 的区别 在 Java 中,Map 是一个非常重要的集合类,用于存储键值对。其中,HashMap, HashTable, LinkedHashMap, TreeMap 是四种常用的 Map 实现类,每种类都有其特点和...

    treemap treeset hashset hashmap 简要介绍

    综上所述,选择`TreeMap`、`TreeSet`、`HashSet`还是`HashMap`,主要取决于具体的应用需求,比如是否需要保持元素的排序,是否允许重复元素,以及对插入、删除和查找操作速度的要求。正确理解并使用这些集合类,可以...

    hashmap 集合

    6. 使用接口而非实现类:在声明变量时,使用Map而非HashMap,这样在实际运行时可以更灵活地更换其他类型的Map,如LinkedHashMap,以改变元素的排序或性能特性。 CacheManager.java文件可能是一个用于管理缓存的类,...

    HashMap底层原理.pdf

    HashMap是Java中非常常见的一种数据结构,...对于需要排序的映射场景,建议使用TreeMap。在使用TreeMap时,key需要实现Comparable接口,或者在构造时提供Comparator,否则在运行时可能会抛出ClassCastException异常。

    HashMap与HashTable和HashSet的区别

    ### HashMap与HashTable和HashSet的区别 #### 一、概述 在Java集合框架中,`HashMap`, `HashTable` 和 `HashSet` 是三个重要的数据结构,它们分别实现了`Map`接口和`Set`接口,提供了不同的功能来满足不同的编程...

Global site tag (gtag.js) - Google Analytics