快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

爱博娱乐官网信誉:JAVA提高教程(12)认识Map之HashMap



Map里面应用率最多的,应该是HashMap吧,我们先来看看这个

packagecollection.lession12;

importjava.util.HashMap;

importjava.util.Iterator;

importjava.util.Map;

/**

*老紫竹JAVA前进教程(12)-熟识Map之HashMap

*基于哈希表的Map接口的实现。

*一个映射不能包孕重复的键;每个键最多只能映射到一个值。

*

*相关API请查看api.java2000.net/Map

*

*@author老紫竹

*/

publicclassLession12{

publicstaticvoidmain(String[]args){

//我们用String做所有的测试

HashMapmap=newHashMap();

//容许null作为Key.

//看看源代码实现就知道了

//if(key==null)

//returnputForNullKey(value);

map.put(null,"测试null的键");

showMap(map);//null=>测试null的键;

//当然也容许null的Value了

map.put("测试null的值",null);

showMap(map);//null=>测试null的键;测试null的值=>null;

//对应的都是null

//留意这个n爱博娱乐官网信誉ul爱博娱乐官网信誉l调换了前面的"NullKey"字符串的value了

//也便是后面的相同的key会调换曩昔的key对应的value

//返回值为曩昔的值

System.out.println("曩昔的值="+map.put(null,null));//曩昔的值=测试null的爱博娱乐官网信誉键

showMap(m爱博娱乐官网信誉ap);//null=>null;测试null的值=>null;

//其它的和Map相同的操作就不先容了

//这里先容一下Hash的特殊的地方

//大年夜家应用时必然要留意,着实和HashSet有相同的地方

//那便是经由过程Key的Hashcode进行查找

Mapmap2=newHashMap();

MyObjectkey1=newMyObject("第一个工具");

MyObjectkey2=newMyObject("第二个工具");

MyObjectkey3=newMyObject("第三个工具");

map2.put(key1,"111111");

map2.put(key2,"222222");

//我们来测试读取第一个

System.out.println(map2.get(key1));//111111

//我们考试测验改动key1的name

key1.setName("第一个工具-改动");

//我们再次测试读取第一个

//没有找到哦!

System.out.println(map2.get(key1));//null

//总结

//HashSet必然要留意hashCode的问题

//对付String等弗成改动类无所谓

//但对付通俗类,必然要留意其hashCode的实现要领

//切切不要让一个类的hashCode随便更改

//假如非得更新,应该先删除,后改动

map2.remove(key2);

key2.setName("第二个工具-改动");

map2.put(key2,"2222222---");

showMap(map2);//第二个工具-改动=>2222222---;第一个工具-改动=>null;

//对Value则没有这个限定

}

publicstaticvoidshowMap(Mapmap){

//迭代Key的操作

Iteratorit=map.keySet().iterator();

Objectkey;

while(it.hasNext()){

key=it.next();

System.out.print(key+"=>"+map.get(key)+";");

}

System.out.爱博娱乐官网信誉println();

}

}

classMyObject{

privateStringname;

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

MyObject(Stringname){

this.name=name;

}

//留意这里应用name的hashCode作为类的hashCode

publicinthashCode(){

returnname.hashCode();

}

publicStringtoString(){

returnname;

}

}

运行结果(已经包孕在源代码里)

null=>测试null的键;

null=>测试null的键; 测试null的值=>null;

曩昔的值=测试null的键

null=>null; 测试null的值=>null;

111111

null

第二个工具-改动=>2222222---; 第一个工具-改动=>null;

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: