这一章节我们来讨论一下Map两个比較经常使用的实现:TreeMap与LinkedHashMap。

1.TreeMap

特性:依照key来排序

package com.ray.ch14;

import java.util.Comparator;
import java.util.TreeMap; public class Test {
public static void main(String[] args) {
TreeMap<Integer, String> map = new TreeMap<Integer, String>();
map.put(4, "4");
map.put(2, "2");
map.put(1, "1");
System.out.println(map);
System.out.println("----------------");
TreeMap<String, String> map2 = new TreeMap<String, String>(
new Comparator<String>() { @Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
map2.put("b", "3");
map2.put("a", "1");
map2.put("d", "4");
map2.put("c", "2");
System.out.println(map2);
}
}

输出:

{1=1, 2=2, 4=4}
----------------
{a=1, b=3, c=2, d=4}

因为TreeMap是依照key来排序,因此我们能够通过map来取得firstkey和lastkey等通过排序得到的一些结果。

2.LinkedHashMap

特性:

(1)依照put 的属性存储

(2)能够通过设置构造函数实现LRU算法 ,就是訪问越少的放在越前面

样例:

package com.ray.ch14;

import java.util.LinkedHashMap;

public class Test {
public static void main(String[] args) {
LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
for (int i = 0; i < 6; i++) {
map.put(i + "", i + "");
}
System.out.println("map:" + map);
LinkedHashMap<String, String> map2 = new LinkedHashMap<String, String>(
16, 0.75f, true);
map2.putAll(map);
System.out.println("map2:" + map2);
for (int i = 0; i < 2; i++) {
map2.get(i + "");
}
System.out.println("map2:" + map2);
}
}

输出:

map:{0=0, 1=1, 2=2, 3=3, 4=4, 5=5}
map2:{0=0, 1=1, 2=2, 3=3, 4=4, 5=5}
map2:{2=2, 3=3, 4=4, 5=5, 0=0, 1=1}

总结:这一章节主要介绍了Map的两个比較经常使用的实现:TreeMap与LinkedHashMap。

这一章节就到这里,谢谢。

-----------------------------------

文件夹

从头认识java-15.7 Map(7)-TreeMap与LinkedHashMap的更多相关文章

  1. Java笔记(八)TreeMap & TreeSet & LinkedHashMap

    TreeMap & TreeSet & LinkedHashMap 一.TreeMap HashMap缺陷:键值对之间没有特定的顺序.在TreeMap中, 键值对之间按键有序,Tree ...

  2. java集合系列——Map之TreeMap介绍(九)

    一.TreeMap的简介 TreeMap是一个有序的key-value集合,基于红黑树(Red-Black tree)的 NavigableMap实现.该映射根据其键的自然顺序进行排序,或者根据创建映 ...

  3. 【Java】Map杂谈,hashcode()、equals()、HashMap、TreeMap、LinkedHashMap、ConcurrentHashMap

    参考的优秀文章: <Java编程思想>第四版 <Effective Java>第二版 Map接口是映射表的结构,维护键对象与值对象的对应关系,称键值对. > hashco ...

  4. java json与map互相转换(二)

      java json与map互相转换(二) CreationTime--2018年7月16日15点09分 Author:Marydon 1.准备工作 所需jar包: commons-beanutil ...

  5. Java TreeMap 和 LinkedHashMap【笔记】

    Java TreeMap 和 LinkedHashMap[笔记] TreeMap TreeMap基本结构 TreeMap 底层的数据结构就是红黑树,和 HashMap 的红黑树结构一样 与HashMa ...

  6. 【Java心得总结七】Java容器下——Map

    我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...

  7. Java中Set Map List 的区别

    java中set map list的区别: 都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list   --其中的值允许重复,因为其为有序的数据结构 map--成对的数据结构 ...

  8. Java中遍历Map集合的四种方法

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  9. Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例

    概要 这一章,我们对TreeMap进行学习.我们先对TreeMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用TreeMap.内容包括:第1部分 TreeMap介绍第2部分 TreeMa ...

随机推荐

  1. Revit Family API 添加材质参数设置可见性

    start //添加类型 void AddType(FamilyManager familyMgr, string name, double w, double d) {     FamilyType ...

  2. AngularJS路由系列(4)-- UI-Router的$state服务、路由事件、获取路由参数

    本系列探寻AngularJS的路由机制,在WebStorm下开发.主要包括: ● UI-Router的$state服务● UI-Router的路由事件● UI-Router获取路由参数 Angular ...

  3. Sales Order ORA-04062 FRM-40815 in EBS R12.2.4

    [oracle@ebs ~]$ su - oracle [oracle@ebs ~]$ source /u01/install/VISION/fs1/EBSapps/appl/APPSEBSDB_eb ...

  4. Android_深入解析AsyncTask

    转载:特别感谢浪人的星空,有部分修改! http://blog.csdn.net/hitlion2008/article/details/7983449 1.AsyncTask的内幕 AsyncTas ...

  5. JS --- 三目运算符

    1.什么是三目运算:(布尔表达式 ? 值0:值1;) 5>3?alert('5大'):alert('3大'); 即    if(5>3){alert('5大')}else{alert('3 ...

  6. fastjson 过滤不需要的字段或者只要某些字段

    /* * 第一种:在对象响应字段前加注解,这样生成的json也不包含该字段. * @JSONField(serialize=false)   * private String name;   */ / ...

  7. unity 打包资源及网络请求资源包

    第一步 导包 在Assets新建一个Editor目录 新建一个Test类 using UnityEngine; using System.Collections; using UnityEditor; ...

  8. 详细解读Volley(二)—— ImageRequest & Request简介

    上篇文章我们讲到了如何用volley进行简单的网络请求,我们可以很容易的接受到string.JsonObjec类型的返回结果,之前的例子仅仅是一次请求,这里需要说明volley本身就是适合高并发的,所 ...

  9. 自己写的SeekBarPreference,可以实现seekbar滑动监听和设置默认进度和最大进度

    我通过参考android源码,把这个烂尾的类写完了.具体实现了seekbar的数据自动存储,seekbar拖动时触发监听器,可以设置默认的进度和最大进度.先说使用的方式: 1.在xml文件中使用pre ...

  10. [Android Pro] 深入理解函数的调用过程——栈帧

    cp :http://blog.csdn.net/x_perseverance/article/details/78897637 每一个函数被调用时,都会为函数开辟一块空间,这块空间就称为栈帧. 首先 ...