HashMap

来源:互联网 发布:csgo皮肤枪大全知乎 编辑:程序博客网 时间:2024/05/22 01:33
  1. Hashmap

 

 

 

 

  1. hashmap不是线程安全的;
  2. 底层是数组,数组中封存着entity,映射关系;

hashmap的key值唯一的原理是,放入的key值会先比对hashcode,如果hashcode一致会去用equals方法,比较值是否相同.如果hashcode和equals都相同,则为同样的key,保存进去编译期就会报错;

  1. 源码查看:

 

 

1<<4位运算,aka=as known as ,亦叫做

  1. 默认初始容量:16;
  2. 最大容量:1073741824;
  3. 负载因子:实际最大可容纳的容量/理论上可存放的容量;
    1. 负载因子增大,会减少内存的消耗,但会增加查询数据的开销时间;
    2. 负载因子减小,会增加内存的小伙,但会减少查询数据的开销时间;因为负载因子增大,则实际可存储的容量增大,就不用另外增加容量,减少了内存的消耗.但同时key增加,底层需要比较hashcode,增加了查询数据的时间;
  4. if(size++>=threshold)

  resize(2*table.length);

如果超过了容量极限,会直接扩大到两倍;

  1. 遍历的方式:
    1. Keyset:
    2. Map.Entry<String,String> entry;
    3. Demo:

public class KeysetDemo {

    public static voidmain(String[] args) {

Map<String, String> map = new HashMap();

map.put("1", "小花");

map.put("2", "大神");

map.put("3", "学神");

 

for (String string : map.keySet()) {

System.out.println(string+"..."+map.get(string));        

}

 

for (Map.Entry<String, String> entry: map.entrySet()) {

System.out.println(entry.getKey()+"..."+entry.getValue());

}

}

}

  1. hashmap是无序集合,若要按顺序存储用linkedHashMap.按自然数排列用hashTable;
原创粉丝点击