Java后台开发面试实战(五):Java集合

感谢牛客网网友提供的面试经验!

1. 集合常用的有哪几种?

从map,list,set三大接口下分类别回答

  • map接口下的
  1. HashMap(首先想起最常用的hashmap,无序线程不安全,底层是数组加链表加红黑树),
  2. HashTable(然后想起线程安全的hashtable),
  3. HashTree(然后想起有序的hashtree,底层是红黑树),
  4. LinkedHashMap(然后想起有序的hashtree,底层是红黑树),
  5. ConcurrentHashMap(然后想起有序的hashtree,底层是双向链表加数组加链表加红黑树,线程安全)

ConcurrentHashMap结合了HashMap和Hashtable二者的优势

  • List接口下的
  1. ArrayList(底层为数组的arraylist,线程不安全),
  2. LinkedList(底层为链表的的LinkedList,线程不安全),
  3. Stack(常用的栈,继承自Vector,底层是通过数组实现的,线程安全)
  4. Vector(,底层是通过数组实现的,线程安全)
  • Set接口下的
  1. HashSet(HashSet底层使用了Hash表实现),
  2. TreeSet(TreeSet底层使用了红黑树来实现),
  3. LinkedHashSet( LinkedHashSet是具有可预知迭代顺序的Set接口的哈希表和链接列表实现)
2. 集合里哪些是线程安全的?

vector, stack, hashtable,ConcurrentHashMap。

3. list,set有什么区别?

最主要的区别,list包含重复元素,set不包含重复元素

4. HashMap, HashTable有什么区别?

最主要的区别,HashMap是线程不安全的,HashTable是线程安全的;另外,HashMap内的key和value允许为空,HashTable的key和value不允许为空

5. ArrayList,LinkedList有什么区别?

ArrayList底层是数组,方便查找,不方便增加删除元素。LinkedList底层是链表,方便增删,但是查找不方便。

从名字可以推想出底层
从底层可以推想出其特点

6. HashSet,TreeSet是怎么保证元素唯一性的?

保证元素唯一性的原理:HashSet判断元素的hashCode值是否相同。如果相同,还会继续判断元素的equals方法,是否为true。TreeSet底层保证元素唯一性是通过Comparable或者Comparator接口实现。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值