zoukankan      html  css  js  c++  java
  • Java 集合、Map 相关

    集合相关

    List、Set、Map的区别

    类型 描述
    List 允许重复对象,可插入多个null元素,有序
    Set 不允许重复对象,只允许一个null元素,无序
    Map 不是collection的子接口或实现类,是一个接口,每个元素都是entry,一个键一个值

    Vector、ArrayList、LinkedList的区别

    类型 描述
    Vector 动态数组,安全,扩容提高1倍
    ArrayList 动态数组,不安全,扩容增加50%,初始容量10
    LinkedList 双向链表,不安全,不需要调整容易

    Vector:动态数组,安全,扩容提高1倍

    ArrayList:动态数组,不安全,扩容增加50%,初始容量10

    LinkedList:双向链表,不安全,不需要调整容易

    TreeSet为什么有序

    实现了SortedSet接口,还是通过 Comparator  或者 Comparable 维护了一个排序顺序

    HashMap方面

    HashMap的内部数据结构

    底层使用哈希表(链表( O(n) )+数组),若链表长度过长会转成红黑树实现(O(logn))

    HashMap小知识点

    知识点 答案
    HashMap初始容量 16
    HashMap扩容增量 原容量的1倍(2的平方)
    HashMap调整容量大小的值 需要调整容量大小的指定值=当前容量*负载因子
    HashMap如何保证随机性 通过key的hashCode值,调用hash函数
    HashMap的容量为什么是2的倍数 因为hash算法的原因,为了最大随机性,让key的hashcode去决定索引值
    HashMap的容量为什么是2的倍数 hash算法的原因,为了最大随机性,让key的hashcode去决定索引值
    HashCode的作用 确定对象在哈希表的索引位置
    什么是Hash碰撞? 当不同key通过hash算法定位键值对存储位置时,两个key会定位到相同位置
    如何解决Hash碰撞? 链地址(拉链法)法(即链表形式)
    HashMap为什么线程不安全 Hashmap没有实现锁的机制,1.5之后提供了ConcurrentHashMap高效的线程安全类
    HashMap线程不安全的表现 会出现更新丢失,存储了B put的值,但是丢失了A put的值

    HashTable、HashMap、TreeMap、LinkedHashMap的区别

    类型 底层数据结构 是否同步 others
    HashTable 哈希表 Yep 不支持null键和null值,无序
    HashMap 哈希表 Yep 支持null键和null值,无序
    TreeMap 红黑树 No 通过Comparator或实现Comparable接口对键的顺序关系决定有序
    LinkedHashMap 双向链表 No 遍历顺序决定有序
  • 相关阅读:
    整数的唯一分解定理【模板】
    poj 1419Graph Coloring 【dfs+补图+计算最大团+计算最大独立集 【模板】】
    poj 1065 Wooden Sticks 【贪心 新思维】
    poj 3126 Prime Path 【bfs】
    hihocoder 第五十二周 高斯消元·二【高斯消元解异或方程 难点【模板】】
    poj 1840 Eqs 【解五元方程+分治+枚举打表+二分查找所有key 】
    poj 1019 Number Sequence 【组合数学+数字x的位宽函数】
    括号匹配
    Digit
    Ace of Aces
  • 原文地址:https://www.cnblogs.com/poloyy/p/12124417.html
Copyright © 2011-2022 走看看