java map

哑巴开口说话,饼上放些盐巴!

Map 特点key-value映射

  HashMap Key无序唯一(Set)

             Value 无序 不唯一(Collection)

  LinkedHashMap

     有序的 hashMap速度快

  TreeMap 有序速度没有hash快

  set与Map有关系:采用了相同的数据结构,只用于map的key存储是set。

  map存储的是key-V键值对映射的数据
实现子类:HashMap:数组+链表(1.7),数组+链表+红黑树(1.8)
LinkedHashMap: 链表
TreeMap: 红黑树
基本API:增加:put(k,v);
查找:isEmpty返回是否为空 size 返回大小.
containsKey
containsValue
get
删除:
clear 清空集合所有元素
remove 删除指定元素
map.entry : 表示的是Key和V组合的一组映射关系,key 和 value 成组出现.
hashmap和hashtable的区别
1、hashmap线程不安全,效率比较高,hashtable线程安全,效率低
2、hashmap中key和value都可以为空,hashtable不允许为空
3、hashMap初始值为2的N次幂
1.方便进行&运算操作,提高效率,&比其他运算效率高
hash & initCapacity-1)
2.在扩容之后涉及到元素的迁移过程,迁移的时候只需要判断二进制的前一位是1或者0即可,
如果是0,元素新数组和旧数组 的下表不变,
如果是1,只需要将索引位置+旧的数组的长度值即为新数组的下标.

1.7源码知识点, 数组+链表
1、默认初始容量
2、加载因子
3、put操作,1、设置值,计算hash
2、扩容操作
3、数据迁移过程
1.8源码知识点: 数组+链表+红黑树
map的四种循环:
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<String,Integer>();
        map.put("a",1);
        map.put("b",2);
        map.put("c",3);
        map.put("d",4);
        // System.out.println(map);
        //1.遍历操作
        Set<String> keys = map.keySet();
        for(String key:keys){
            System.out.println(key +"="+map.get(key));
        }

        //2.只能获取values值不能获取key
        Collection<Integer> values = map.values();
        for (Integer i:values){
            System.out.println(i);
        }

        //3.迭代器
        Set<String> keys2 = map.keySet();
        Iterator<String> iterator = keys2.iterator();
        while (iterator.hasNext()){
            String key = iterator.next();
            System.out.println(key+"="+map.get(key));
        }

        //4. map entry 不用根据key获取值
        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        Iterator<Map.Entry<String, Integer>> iterator1 = entries.iterator();
        while (iterator1.hasNext()){
            Map.Entry<String, Integer> next = iterator1.next();
            System.out.println(next.getKey()+"="+next.getValue());
        }

    }

 

posted @ 2022-11-07 15:44  宝宝佩恩天道  阅读(37)  评论(0编辑  收藏  举报