日期:2014-05-20  浏览次数:20797 次

初学Java的困惑?

  学Java这么长时间了,我一直对Map接口不是很懂,尤其是Hashmap和Hashtable.
  对他们的概念很模糊,所以根本谈不上使用。
  有哪位高手可以指教一下,最好能举一个例子。多谢了!

------解决方案--------------------
转摘的,建议楼主多用baidu和google,呵呵

大家都知道,在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索引其内容之外,别的方面差异并不大。

------解决方案--------------------
Hashmap和Hashtable好像数据结构的书都有说到的
------解决方案--------------------
学习。
------解决方案--------------------
ding
在家java中,应该怎么办才能在短时间内 上手学习java