小熊1986

导航

map

Map接口学习

1.为什么要使用k-v的进行操作

因为k-v可以更快的进行搜索,并且k-v是一一对应的操作,查询效率高。

2.map接口常用的几个类是那些

  • HashMap
  • LinkedMap
  • TreeMap

3.数据结构层面上查看

  • HashMap使用哈希表进行操作(1.7以前使用的是数组和链表的形式,1.8以后,数组+链表+红黑树的形式操作)
  • LinedMap使用的是链表的形式进行存储(查询时间比较快)
  • TreeMap使用的是红黑树的方式进行存储

4.基础操作

package com.joy;
import java.util.*;
public class Test {
    public static void main(String[] args) {
        //基础api的基础使用
        Map<Integer,String> map = new HashMap<Integer, String>();
        //加入操作
        map.put(1,"zhangsan");
        map.put(2,"lisi");
        System.out.println("删除前"+map);
        //查找
        System.out.println(map.containsKey(1));             //根据key来查询
        System.out.println(map.containsValue("wangwu"));    //这是根据value来查询
        //删除
//        map.clear();  全部清空
//        map.remove(2);指定删除
        //获取
        System.out.println("获得="+map.get(1));
        System.out.println("删除后"+map);
        //判断是否为空
        System.out.println("是否为空"+map.isEmpty());
        //获得长度
        System.out.println("map长度="+map.size());
        //循环操作
        //第一种采用集合的操作
        Iterator<Map.Entry<Integer, String>> iterator = map.entrySet().iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
        //获得对应的key数值
        Iterator<Integer> iterator1 = map.keySet().iterator();
        while(iterator1.hasNext()){
            System.out.println(iterator1.next());
        }
        //获得value
        Collection<String> values = map.values();
        for (String s:values){
            System.out.println(s);
        }
    }
}

HashMap和HashTabel的区别

  • HashMap线程不安全,效率比较高,HashTabel线程安全,效率低。
  • HashMap key-value 可以为null,但是HashTabel不允许为null

初始化容器数量

/**
 * The default initial capacity - MUST be a power of two.
 */
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16

扩容系数

/**
 * The load factor used when none specified in constructor.
 */
static final float DEFAULT_LOAD_FACTOR = 0.75;

这个是插入某一个数量以后就需要扩容了比如16*0.75=12 这个时候到了12就需要进行扩容的操作了。

1.8以后的源码分析请查看

https://blog.csdn.net/tuke_tuke/article/details/51588156

1.7可以查看

https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/collection/HashMap.md

github地址

如果此教程对你有帮助请点一个星

posted on 2020-11-23 15:00  小熊1986  阅读(18)  评论(0编辑  收藏  举报