浅谈HashMap

来源:互联网 发布:centos安装idea 编辑:程序博客网 时间:2024/06/06 19:31

 浅谈HashMap

大家都知道,在Java里对对象的操作是基于引用的。而当我们需要对一组对象操作的时候,就需要有接收这一组引用的容器。平时我们最常用的就是数组。在Java里可以定义一个对象数组来完成许多操作。可是,数组长度是固定的,如果我们需要更加灵活的解决方案该怎么办呢?

本文重点介绍HashMap。首先介绍一下什么是Map。在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value。在下文中会有例子具体说明。

再来看看HashMap和TreeMap有什么区别。HashMap通过hashcode对其内容进行快速查找,而 TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定 的)。

下面就要进入本文的主题了。先举个例子说明一下怎样使用HashMap:

 

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));//生成1000个0到20的数字
               if(h1.containsKey(t))//比较h1里面是否有t,其实h1里面是个空对象,更本不会有的,这里是为了演示containsKey()这个方法
                    ((Ctime)h1.get(t)).count++;//要是有的话,取得它,并把指针移到下一个的地址
               else
                    h1.put(t, new Ctime());//插入值
          }
          System.out.println(h1);
     }
}

class Ctime{//Ctime是自带的,表示一个生成的秒数。
     int count=1;
     public String toString(){
          return Integer.toString(count);
     }
}
 
 
 在HashMap中通过get()来获取value,通过put()来插入value,ContainsKey()则用来检验对象是否已经存在。可以看出,和ArrayList的操作相比,HashMap除了通过key索引其内容之外,别的方面差异并不大。

 
原创粉丝点击