关于hashmap的一点代码段

2019-03-14 22:12:26  卢浮宫  版权声明:本文为站长原创文章,转载请写明出处


一、前言


    今天看到一个关于hashmap的代码段,觉得内容虽少但是触及的知识点比较多,所以又加工了下。
这里的话就最终的代码贴出来记录下。



二、代码如下:


public class xa {
public static void main(String[] args) {
Map<Long,String> map = new HashMap();
String vKeyValTmp = "";
for(int i=0;i<10;i++){
Long key = (long) (i + 1);
map.put(key, i+"-"+1);
if(i == 2){
vKeyValTmp = (i+"-"+1);
}
}
map.put((long)2,"asdf");
System.out.println(map.toString());
System.out.println(map.get(2));
System.out.println(map.get((long)2));
System.out.println(vKeyValTmp.hashCode() == map.get((long)2).hashCode());
System.out.println(vKeyValTmp.equals(map.get((long)2).toString()));
System.out.println("asdf".equals("asdf"));
System.out.println("asdf".hashCode() == "asdf".hashCode());
}
}


输出结果为:
{1=0-1, 2=asdf, 3=2-1, 4=3-1, 5=4-1, 6=5-1, 7=6-1, 8=7-1, 9=8-1, 10=9-1}
null
asdf
false
false
true
true

三、这里所涉及的知识点有


    1、类型转换:在jdk5引入了装箱和拆箱的概念,解决了基本数据类型和派生类型之间的转换。但是在不同的基本数据类型之间还是能进行一个自动转换的。
            这时我们就需要用到强制类型转换了:Long vKey = (long)(i+1);


    2、hashmap的实现原理:hashmap是使用key-value来实现的一个键值对数据集,并通过put(key,value)来进行数据的写入。


    3、泛型:上面的map在定义时声明了Map(Long,String),这样做的好处是数据规范性,也就是说当你试图插入一个map.put(1,"str")时就会编译报错。


    4、map.get():当我们取map的数据时是通过map.get(key)来进行的,同样因为我们声明了Map的键值类型,在取数据时也要按照这个规范。


    5、map数据写入:当我们在使用map.put来进行数据写入时,如果之前的key已经存在,那么是覆盖对应的value。


    6、map在插入数据时的检测机制:map在写入数据时是先获取key然后拿到其value的,当检测到已存在对应的value时就会比较当前写入数与旧数据,如果重复
           就进行覆盖,而这个检测是使用hashCode()和equals()来进行对比的。
 


更多精彩请关注guangmuhua.com


最新评论: