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数组。

                        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算法实现的,其具体的判断过程如下图所示。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值