2022持续学习-集合框架-面试总结

集合框架:

    1 ArrayList 和Vector的区别
    两个类都实现了List接口,他们都是有序的集合。可存储重复的数据(和HashSet不同,HashSet存储的数据无重复数据)另外,从同步性来看Vector是线程安全的,而ArrayList是线程不安全的。
备注:(对于 Vector&ArrayList、Hashtable&HashMap,要记住线程安全的问题)
    扩容:Vector扩容是原来数据的2倍,而ArrayList是原来的1.5倍。
    LinkedList使用的双向链表,插入数据时只需要记录本项的前后项即可,所以插入速度较快。ArrayList 在查找时速度快,LinkedList 在插入与删除时更具优势。

   2 HashMap的扩容
    HashMap 的一些重要的特性是它的容量 (capacity),负载因子 (load factor) 和扩 容极限(threshold resizing)。 
    当HashMap中的元素的个数超过数组大小 loadFactor时,就会进行数组扩容,loadFactor默认值是0.75 就是说,默认数组大小为16当元素个数超过 16*0.75=12 的时候,数组大小扩展为16*2 =  32 原来的2倍,
然后重新计算每个元素的位置,而这个操作非常耗性能。如果能预知HashMap的元素个数能够有效的提高性能。
    已知元素个数比如 1000个元素,那么设置HashMap的大小多少比较合适?1024 错, 1024*0.75=1000 也就是说,设置为2048的HashMap性能最好。

      3 数组(Array)和列表(ArrayList)区别,使用场景?

        Array可以包含基本数据类型和对象类型,ArrayList只能包含对象类型。

        Array大小是固定的,ArrayList是动态变化的。

        元素的大小固定,能够事先知道,那么使用Array优于是用ArrayList

   4 什么是迭代器(Iterator)?

        Iterator接口是提供很多对集合元素进行迭代的方法,每个集合累都包含了可返回迭代器的实例的迭代方法,迭代器可以在迭代过程中删除集合元素,而不可以直接调用集合的remove(Object obj)删除,需通过迭代器的remove()方法删除

    5 java集合框架的最佳实践有哪些?

       元素的大小固定,能够事先知道,那么使用Array优于是用ArrayList

        有些集合允许知道容量,因此在能预估存储元素数量的情况下,可设置初始容量来避免算hash或扩容

        编程时候接口优于实现

        底层集合是空的情况下,返回长度为0的集合或数组,不要返回Null对象        

     6 ArrayList和LinkedList的区别和使用(m)

  1. ArrayList和LinkedList的底层实现不同,ArrayList是基于数组而LinkedList是基于链表实现。
  2. 使用的场景也有所不同,ArrayList更适合随机查找,而LinkedList更适合删除、添加。LinkedList的查询、添加、删除时间复杂度不同。
  3. 另外除了都实现List接口LinkedList还实现了Deque接口,可用做队列

待完善

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值