Java中的List、Set、Map面试常问知识点总结

一:集合结构

1:List:

        有序(元素存入集合的顺序和取出的顺序已知)、可以重复存储具有索引下标。常用的实现类:ArrayList、LinkedList、Vector。查找元素效率高插入删除元素效率低

2:Set:

       无序(存入、取出的顺序有可能不一致)、不可重复存储没有索引下标。常用的实现类:HashSet、LinkedHashSet、TreeSet。查找元素效率低插入删除效率高。

3:Map:

        是一个键值对集合,(Key)键 无序唯一;(Value)值 允许重复。常用的实现类:HashMap、TreeMap、HashTable、LinkedHashMap、ConcurrentHashMap。

二:集合底层所使用的数据结构

Collection:

        (1):List

                        ArrayList:Object数组。

                        Vector:Object数组。

扫描二维码关注公众号,回复: 15429429 查看本文章

                        LinkedList:双向循环链表。

        (2):Set

                        HashSet(无序唯一):采用HashMap实现。

                        TreeSet(有序唯一):红黑树(自平衡的排序二叉树)。

        (3):Map

                        HashMap:JDK1.8之前HashMap由数组+链表组成。数组是HashMap的主体,链表则为了解决哈希值冲突而存在("拉链法"解决冲突)。JDK1.8之后,在解决哈希值冲突上发生了变化,当链表长度大于阈值(默认为8)时,将链表转化为红黑树,以减少冲突

                        LinkedHashMap:LinkedHashMap继承自HashMap,底层采用的仍是数组+链表或红黑树组成。

                        HashTable:数组+链表组成。数组是HashTable的主体,链表则是为了解决哈希冲突而存在。

                        TreeMap:红黑树(自平衡的排序二叉树)。

三:HashMap的实现原理

        HashMap是基于Hash算法实现的,其具体的判断过程如下图所示。

猜你喜欢

转载自blog.csdn.net/qq_42027706/article/details/124574079
今日推荐