扩展阅读
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?
  • java命名空间java.security类keystore的类成员方法: getdefaulttype定义及介绍
  • 新年第一天,让我们讨论一下未来一年JAVA的发展趋势! 个人认为,JAVA将主要朝ERP和JAVA手机方面发展!
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getclasspath定义及介绍
  • 我想学Java,但不知道Java的实用的开发工具有那些,Java主要用在哪些方面,EJB到底是什么东西??
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javaserializedobjectmimetype定义及介绍
  • redhat7.3下,java程序打印中文直接用java命令执行正常,用crontab执行java命令为乱码
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javafilelistflavor定义及介绍
  • 各位学java的朋友,学java的未来是什么,你们学java都用来开发什么项目啊!来者给分!!
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getvmname定义及介绍
  • 请问java程序中的import为什么有的用java.….*,而有的又用java.….…,有什么区别吗?
  •  
    当前位置:  编程语言>java/jsp

    java map(HashMap TreeMap)用法:初始化,遍历和排序详解

     
        发布时间:2013-10-20  


        本文导语:  1.总体介绍 Map接口的常用实现类主要有HashMap和TreeMap,HashMap通过哈希码对其内部的映射关系进行快速查找,而TreeMap中的映射关系存在一定的顺序,如果希望在遍历集合时是有序的,则应该使用由TreeMap类实现的Map集合,否...

    1.总体介绍

      Map接口常用实现主要有HashMapTreeMap,HashMap通过哈希码对其内部的映射关系进行快速查找,而TreeMap中的映射关系存在一定的顺序,如果希望在遍历集合时是有序的,则应该使用由TreeMap类实现的Map集合,否则建议使用由HashMap类实现的Map集合,因为由HashMap类实现的Map集合对于添加和删除映射关系更高效

        Map集合允许值对象null,并且没有个数限制,所以当get()方法返回值为null时,可能有两种情况,一种是在集合中没有该键对象,另一种是该键对象没有映射任何值对象,即值对象为null。因此,在Map集合中不应该利用get()方法来判断是否存在某个键,而应该利用containsKey()方法来判断。

    2. 两种常规Map实现

    HashMap:基于哈希表实现。使用HashMap要求添加的键类明确定义了hashCode()和equals()[可以重写hashCode()和equals()],为了优化HashMap空间的使用,您可以调优初始容量和负载因子。

    (1)HashMap(): 构建一个空的哈希映射

    (2)HashMap(Map m): 构建一个哈希映射,并且添加映像m的所有映射

    (3)HashMap(int initialCapacity): 构建一个拥有特定容量的空的哈希映射

    (4)HashMap(int initialCapacity, float loadFactor): 构建一个拥有特定容量和加载因子的空的哈希映射

    TreeMap:基于红黑树实现。TreeMap没有调优选项,因为该树总处于平衡状态

    (1)TreeMap():构建一个空的映射

    (2)TreeMap(Map m): 构建一个映射树,并且添加映射m中所有元素

    (3)TreeMap(Comparator c): 构建一个映射树,并且使用特定的比较器对关键字进行排序

    (4)TreeMap(SortedMap s): 构建一个映像树,添加映射树s中所有映射,并且使用与有序映像s相同的比较器排序

    3.两种常规Map性能

    HashMap:适用于在Map中插入、删除和定位元素,时间复杂度O(1)。

    Treemap:适用于按自然顺序或自定义顺序遍历键(key),时间复杂度O(log2N)。

    4.常用代码

    1)声明一个map: Map map = new HashMap();

    2)向map中放值,注意:map是key-value的形式存放的.

    如:map.put("sa","dd");

    3)从map中取值:

    String str = map.get("sa").toString();

    结果是:str = "dd";

    4)遍历一个map,从中取得key和value .

    Map m = new HashMap();      

    for(Object o :map.keySet())  

    {              

    map.get(o);      

    }

    5.详细代码参考

    1)下面的代码首先创建一个由HashMap类实现的Map集合,并依次向Map集合中添加一个值对象为null和“马先生”的映射;然后分别通过get()和containsKey()方法执行这两个键对象;最后执行一个不存在的键对象。

    关键代码如下:

    public static void main(String[] args)
    {
    Map<Integer, String> map = new HashMap<Integer, String>();
    map.put(220180, null);
    map.put(220181, "http://");
    System.out.println("get()方法的返回结果:");
    System.out.print("------ " + map.get(220180));
    System.out.print(" " + map.get(220181));
    System.out.println(" " + map.get(220182));
    System.out.println("containsKey()方法的返回结果:");
    System.out.print("------ " + map.containsKey(220180));
    System.out.print(" " + map.containsKey(220181));
    System.out.println(" " + map.containsKey(220182));
    }

    执行上面的代码,在控制台输出如下信息

    get()方法的返回结果:

    ------ null http://169it.com null

    containsKey()方法的返回结果:

    ------ true true false

    2)参考代码2

    import java.util.*;
    public class Exp1 {
    public static void main(String[] args){
    HashMap h1=new HashMap();
    Random r1=new Random();
    for (int i=0;i<1000;i++){
    Integer t=new Integer(r1.nextInt(20));
    if (h1.containsKey(t))
    ((Ctime)h1.get(t)).count++;
    else
    h1.put(t, new Ctime());
    }
    System.out.println(h1);
    }
    }
    class Ctime{
    int count=1;
    public String toString(){
    return Integer.toString(count);
    }
    }


    • 本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
      本站(WWW.)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
      转载请注明:文章转载自:[169IT-IT技术资讯]
      本文标题:java map(HashMap TreeMap)用法:初始化,遍历和排序详解
    相关文章推荐:
  • 请问:哪里有java所有类包的介绍,用法,及所有类的用途,用法,例子等的书或帮助的下载?
  • 请教java中的assert的用法
  • 原始问题,初学java,大家莫笑:appletviewer用法
  • java的String类用法
  • 请告诉我java 反编译软件macha的用法.
  • java之super关键字用法实例解析
  • Java 1.3有没有类似 MSDN 的电子帮助文档,介绍Java的类库的用法!有的话,哪儿可以Down!(高分求解)
  • 想学JAVA,请问JBUILDER 和 VISUAL J++ 一样么?用法区别大么?谢谢
  • java中Scanner类的简单用法分享
  • (SOS 在线等待,马上给分)Java -D用法问题
  • 请哪位大侠为我作一些开导:Java的Native的用法
  • java之this关键字用法实例分析
  • java之static关键字用法实例解析
  • Java join 线程控制用法
  • 问个低级的问题:在windows里 有 char * strfilename1 =new char[255];strcpy(strfilename1,"C:\finger2.bmp")的用法,在纯java里怎么写
  • 浅析Java中Split函数的用法技巧
  • 请各位java高手谈谈java结合xml的用法,谢谢,来者有分!!
  • JAVA心得分享---return语句的用法
  • java equals函数用法详解
  • java之Object类用法实例


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3