TreeMap:有固定顺序的hashmap。在需要排序的Map时候才用TreeMap。

Map。在数组中我们是通过数组下标来对其内容索引的,键值对。

HashMap
HashMap 用哈希码快速定位一个键,但是元素存储无序。HashMap的实现是假定元素是放在一个圆形的环上,每次put进来的元素根据其hashCode计算该元素在圆环上索引,把该元素放到合适的位置。

注意:其put()函数支持null,而如果原位置上有值,则替换为新值后,并返回旧值。其返回过程确定的位置正是get()函数的实现。参见http://blog.csdn.net/longshenlmj/article/details/17077869

而TreeMap中所有元素按某种固定顺序存放,需要有序结果使用TreeMap。看下TreeMap
API帮助文档。其有扩展方法如firstKey(),lastKey(),还可以在存储时指定排序器,例子:

http://huangqiqing123.iteye.com/blog/1461163

默认的排序器都是简单的,如整数。

HashMap 非线程安全 TreeMap
非线程安全

TreeMap<Key, Entity>

Key类应该是一个含有sort值,并且支持Comparable接口的(好根据Key),

因为你要重新排序,肯定要创建TreeMap<Key, Entity>了。

http://www.jb51.net/article/32652.htm

http://www.iteye.com/wiki/blog/1278027

http://ydlmlh.iteye.com/blog/1413675

对毕业生去向进行统计。统计每个去向的人数。我想用TreeMap来进行存储,需要进行排序。要求是根据人数来降序排序。关键是TreeMa是根据红黑树的数据结构,是平衡树,只能根据key来排序,是不能根据value来排序的。因为红黑树的数据结构就是根据key的大小来组织起来的,如果不根据key来排序根本就不能形成TreeMap。必须根据key来排序,默认是根据key的自然排序来组织,比如integer的大小,String的字典排序。如果你的key不能根据默认排序得到,你就需要来继承comparable接口,实现compareTo方法来定义自己的排序方法。

http://bbs.csdn.net/topics/370026848

而treemap中文排序可以参见http://zfsn.iteye.com/blog/739493

http://blog.sina.com.cn/s/blog_4bcb612801000cdd.html

中文的复杂有时是很难完美解决的


就比如有多音字怎么办他按那个读音都是问题

这是必然存在问题的所以才说必要对多样化的东西进行排序这是缺陷

package com.zjbell.hibernate.buss;

import java.text.Collator;

import java.util.Iterator;

import java.util.Locale;

import java.util.Map;

import java.util.Set;

import java.util.TreeMap;

import java.util.Map.Entry;

public class TreeMapTest {

public static void main(String[] args) {

Collator cmp = Collator.getInstance(Locale.CHINA);

Map<String, String> map = new TreeMap<String, String>(cmp);

map.put("c", "c");

map.put("a", "a");

map.put("b", "b");

map.put("d", "d");

map.put("麒麟", "麒麟");

map.put("鲍家", "鲍家");

map.put("安吉", "安吉");

map.put("阿详", "阿详");

map.put("重桥", "重桥");

map.put("泗水", "泗水");

Set<Entry<String, String>> s = map.entrySet();

Iterator<Entry<String, String>> i = s.iterator();

while(i.hasNext()){

Entry<String, String> e = i.next();

System.out.println(e.getKey() + " : " + e.getValue());

}

}

}

发现部分字 无法按拼音排序 ”麒“,“泗”,无法解决。

不知道用,pingyin4j可不可以。

Treemap 有序的hashmap。用于排序的更多相关文章

  1. TreeMap/LinkedHashMap/HashMap按键排序和按值排序

    今天做统计时需要对X轴的地区按照地区代码(areaCode)进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中就需要对map进行排序. 一.简单介绍Map 在讲解Map排 ...

  2. 论HashMap、Hashtable、TreeMap、LinkedHashMap的内部排序

    参考文章 论HashMap.Hashtable.TreeMap.LinkedHashMap的内部排序

  3. Map随笔:有序的HashMap——LinkedHashMap

    目录 Map随笔:有序的HashMap--LinkedHashMap 一,概述 二,源码结构 三,总结 Map随笔:有序的HashMap--LinkedHashMap 一,概述 ​ LinkedHas ...

  4. 如何对一个不断更新的HashMap进行排序

    如何对一个不断更新的HashMap进行排序? 解答:等到HashMap更新稳定后,用ArrayList包装进行排序.或者自己写一个可以类似HashMap的有序Map,每次更新的时候都进行排序,构建自己 ...

  5. HashMap按键排序和按值排序

    对map集合进行排序   今天做统计时需要对X轴的地区按照地区代码(areaCode)进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中就需要对map进行排序. 一.简单 ...

  6. Java List/HashSet/HashMap的排序

    在对Java无序类集合,如List(ArrayList/LinkedList).HashSet(TreeSet有序).HashMap等排序时,Java中一个公共的类Collections,提供了对Ja ...

  7. 关于hashmap的排序

    刚学java不久 之前在学习hashmap的时候 无意间发现,诶?怎么结果是排序的,然后重新输入了好多次,握草,原来java 1.8都实现了hashmap的排序 天真的我没有去网上查,没有去想java ...

  8. 对HashMap进行排序

    首先来看看Map集合获取元素的三种常见方法keySet().values().entrySet() 1. values():返回map集合的所有value的Collection集合(于集合中无序存放) ...

  9. lightgbm用于排序

    一. LTR(learning to rank)经常用于搜索排序中,开源工具中比较有名的是微软的ranklib,但是这个好像是单机版的,也有好长时间没有更新了.所以打算想利用lightgbm进行排序, ...

随机推荐

  1. Apache DbUtils 探秘

    听说Apache的DbUtils很好用,而且是对jdbc的简单的封装,所以可以和jdbc一起混搭,多以今天就来尝试一下,关于DbUtils 是如何使用的. 准备 数据库: MySQL 依赖: mysq ...

  2. 【Android 系统开发】使用 Source InSight 阅读 Android 源码

    1. 安装 Source Insight (1) Source Insight 相关资源 安装相关资源 : -- 下载地址 : http://www.sourceinsight.com/down35. ...

  3. SQL Server SA 最佳实践(也许不仅仅是翻译)

    老实说,本文主要部分是翻译的,并且由于英语水平的问题,我没有完全翻译,有些我觉得不重要的就跳过了,目前看来应该八九不离十,或者说不会影响最终效果,对于英语水平好的读者,可以自行查看原文.但这一年里面我 ...

  4. 2.1、Android Studio通过Lint提升你的代码

    为了测试你的Android应用符合功能需求.最重要的是确保你的代码没有结构性问题.结构差的代码影响你的Android应用的可靠性,让你的代码难以维护.比如,如果你的XML资源文件包含未使用的明明空间, ...

  5. [ExtJS5学习笔记]第二十四节 Extjs5中表格gridpanel或者表单数据后台传输remoteFilter设置

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/39667533 官方文档:http://docs.sencha.com/extjs/5. ...

  6. shell-----sed命令详解

    Table of Contents 1. Sed简介  2. 定址  3. Sed命令  4. 选项  5. 元字符集  6. 实例  7. 脚本 1. Sed简介 sed是一种在线编辑器,它一次处理 ...

  7. Android开发学习之路--RxAndroid之初体验

    学了一段时间android,看了部分的项目代码,然后想想老是学基础也够枯燥乏味的,那么就来学习学习新东西吧,相信很多学java的都听说过RxJava,那么android下也有RxAndroid. Rx ...

  8. Android简易实战教程--第十三话《短信备份和还原~三》

    之前写过短信备份的小案例,哪里仅仅是虚拟了几条短信信息.本篇封装一个业务类,且直接通过内容提供者,访问本系统的短信信息,再提供对外接口.如果想要短信备份和短信还原,直接复制这段代码即可.对于您调用这个 ...

  9. 打Patch实践

    一.找到相应PATCH 确认系统已安装模块版本. SELECTapp.application_short_name, app.application_name, pi.patch_level   FR ...

  10. AnimatedPathView实现自定义图片标签

    老早用过小红书app,对于他们客户端笔记这块的设计非常喜欢,恰好去年在小红书的竞争对手公司,公司基于产品的考虑和产品的发展,也需要将app社交化,于是在社区分享这块多多少少参照了小红书的设计,这里面就 ...