java基础:Map三两事
来源:互联网 发布:手机淘宝收藏店铺在哪 编辑:程序博客网 时间:2024/04/28 03:35
经常用HashMap用习惯了,一用到Map就想用HashMap但是HashMap并不能胜任一切场景。
第一个场景:排序(参考了网上的代码)
开始的时候我想用HashMap做排序代码如下:
Map<String, Integer> map = new HashMap<String, Integer>();map.put("d", 2);map.put("c", 1);map.put("b", 1);map.put("a", 3);List<Map.Entry<String, Integer>> infoIds = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());//排序前for (int i = 0; i < infoIds.size(); i++) { String id = infoIds.get(i).toString(); System.out.println(id);}//d 2//c 1//b 1//a 3//排序Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() { public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { //return (o2.getValue() - o1.getValue()); return (o1.getKey()).toString().compareTo(o2.getKey()); }}); //排序后for (int i = 0; i < infoIds.size(); i++) { String id = infoIds.get(i).toString(); System.out.println(id);}//根据key排序//a 3//b 1//c 1//d 2//根据value排序//a 3//d 2//b 1//c 1但是呢其实Java早就给我们提供好了基于红黑树的TreeMap数据结构,按升序排列
TreeMap<String,String> map=new TreeMap<String, String>();map.put("body", "aabbc");map.put("mch_create_ip", "127.0.0.1");map.put("mch_id", "7551000001");map.put("nonce_str", "adf880d5c8986bd0deb6423c92c9d948");map.put("notify_url", "https://wap.tenpay.com/tenpay.asp");map.put("service", "pay.weixin.native");map.put("total_fee", "1000");map.put("out_trade_no", "ab1406046836");System.out.println(map.keySet().toString());
第二个场景:按输入顺序排序
JAVA在JDK1.4以后提供了LinkedHashMap来帮助我们实现了有序的HashMap!
Map maps = new LinkedHashMap(); maps.put("1", "张三"); maps.put("2", "李四"); maps.put("3", "王五"); maps.put("4", "赵六"); System.out.println("LinkedHashMap(有序):"); Iterator it = maps.entrySet().iterator(); while(it.hasNext()) { Map.Entry entity = (Entry) it.next(); System.out.println("[ key = " + entity.getKey() + ", value = " + entity.getValue() + " ]"); }
执行结果如下:
LinkedHashMap(有序):
[ key = 1, value = 张三 ]
[ key = 2, value = 李四 ]
[ key = 3, value = 王五 ]
[ key = 4, value = 赵六 ]
HashMap,LinkedHashMap,TreeMap应用简介
共同点:
HashMap,LinkedHashMap,TreeMap都属于Map;Map 主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复。
不同点:
1.HashMap里面存入的键值对在取出的时候是随机的,也是我们最常用的一个Map.它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。在Map 中插入、删除和定位元素,HashMap 是最好的选择。
2.TreeMap取出来的是排序后的键值对。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。
3. LinkedHashMap 是HashMap的一个子类,如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现.
0 0
- java基础:Map三两事
- 【Java基础】那三两事
- java开篇三两事
- C++ primer 薄片系列之 map 三两事
- Win32 API 三两事
- C#--属性三两事
- 算法三两事
- RFID破解三两事
- GitHub三两事
- Win32 API 三两事
- 关于ReadDirectoryChangesW的三两事
- 马云之三两事
- Limbo模拟器的三两事
- Python类库三两事
- 关于集合的三两事
- iOS 内存泄漏三两事
- iOS 内存泄漏三两事
- java基础:Map
- leetcode.374. Guess Number Higher or Lower
- 八 shader中数据传递
- cloudera-manager 5.4.10的安装
- 背景色#888888
- ACM暑期集训——专题一[优先队列]
- java基础:Map三两事
- js实现动态时间显示
- [Ubuntu] 编辑器Sublime
- android图表框架 MPAndroidChart 学习记录
- 网络安全-tomcat配置https
- iOS备忘录之图标和启动页尺寸
- 彻底解决安卓5.0软件冲突无法兼容安装失败的方法
- Android基础入门教程——4.1.3 Activity登堂入室
- 想要惊艳面试官?你一张嘴就输了