单列集合和双列集合?(面试问题详解)

单列集合(就是只有一个值)

Collection(顶级接口)

  •   list(有序,可重复)
  •     ArrayList:
  1.     底层是数组(索引)
  2.     查询快,增删慢
  3.     容量不足扩容(扩容1.5倍)
  4.     线程不安全(底层方法没有同步)

 

 

  •   linkedList:
  1.   底层使用链表
  2.   查询慢(顺着链子查寻元素),增删快(一次操作)

 

 

  •   set(无序,不可重复)
  • HashSet:
  1. 内部使用hashMap实现
  2. 存取都比很快
  3. 线程不安全(底层方法没有同步)

 



双列集合(key(建) = value(值))

  • Map
  • HashMap:
  1. key不可重复(两个方法,HashCode(),equals()),value可以重复()
  2. 判断key的hashCode是否重复,不重复就不是重复元素,直接存储。如果重复就调用equlas()方法 判断对象的所有属性是否相同,如果相同就不存储,如果不相同,就存储。
  3. 底层:数组+链表(+红黑二叉树(jdk1.8增加))
  4. key不能为null,value可以为null
  5. 线程不安全(底层方法没有同步

posted @ 2021-02-15 01:32  冰红茶灬  阅读(537)  评论(0编辑  收藏  举报