• Java集合面试题


    一、Java集合面试题

    1.LinkedHashMap底层原理?

    HashMap是无序的,迭代HashMap所得到元素的顺序并不是它们最初放到HashMap的顺序,即不能保持它们的插入顺序。

    LinkedHashMap继承于HashMap,是HashMap和LinkedList的融合体,具备两者的特性。每次put操作都会将entry插入到双向链表的尾部

    2.讲一下TreeMap?

    TreeMap是一个能比较元素大小的Map集合,会对传入的key进行了大小排序。可以使用元素的自然顺序,也可以使用集合中自定义的比较器来进行排序。

    TreeMap的特点:

    1. TreeMap是有序的key-value集合,通过红黑树实现。根据键的自然顺序进行排序或根据提供的Comparator进行排序。
    2. TreeMap继承了AbstractMap,实现了NavigableMap接口,支持一系列的导航方法,给定具体搜索目标,可以返回最接近的匹配项。如floorEntry()、ceilingEntry()分别返回小于等于、大于等于给定键关联的Map.Entry()对象,不存在则返回null。lowerKey()、floorKey、ceilingKey、higherKey()只返回关联的key。

    3. HashSet底层原理?

    HashSet 基于 HashMap 实现。放入HashSet中的元素实际上由HashMap的key来保存,而HashMap的value则存储了一个静态的Object对象。

    public class HashSet<E>
        extends AbstractSet<E>
        implements Set<E>, Cloneable, java.io.Serializable {
        static final long serialVersionUID = -5024744406713321676L;
    
        private transient HashMap<E,Object> map; //基于HashMap实现
        //...
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4.HashSet、LinkedHashSet 和 TreeSet 的区别?

    HashSet 是 Set 接口的主要实现类 ,HashSet 的底层是 HashMap,线程不安全的,可以存储 null 值;

    LinkedHashSet 是 HashSet 的子类,能够按照添加的顺序遍历;

    TreeSet 底层使用红黑树,能够按照添加元素的顺序进行遍历,排序的方式可以自定义

  • 相关阅读:
    laravel 关联模型 多态关系
    如何写好一个接口
    ROS学习记录2018.7.10
    Paparazzi: Surface Editing by way of Multi-View Image Processing
    《protobuf》基础语法2
    微信小游戏现在已不“小”了?
    Golang sync.Map原理分析
    Android Termux安装MySQL,并使用cpolar实现公网安全远程连接[内网穿透]
    java计算机毕业设计vue架构云餐厅美食订餐系统源码+mysql数据库+系统+lw文档+部署
    Java冲突
  • 原文地址:https://blog.csdn.net/Afu1021/article/details/133533309