Java基础知识盘点- 集合篇

Posted Cristin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础知识盘点- 集合篇相关的知识,希望对你有一定的参考价值。

List和Set区别

  List和Set都是继承Collection接口

  List特点:元素有放入顺序,元素可重复

  Set特点:元素无放入顺序,元素不可重复

  Set和List对比:

    Set:检索元素效率低下,删除和插入效率高,其删除和插入操作不会引起元素位置的改变。

    List:和数组类似,List可以动态增长,查找元素效率高,插入删除效率低,因为它会引起其他元素的位置改变。

 

List和Map区别

  List是对象集合,允许对象重复。

  Map是键值对集合,Key不允许重复。

 

Arraylist和Linkedlist区别

  Arraylist

    优点:Arraylist是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高

    缺点:因为地址连续,Arraylist要移动数据,所以插入和删除操作效率比较低。

  LinkedList:

    优点:Linkedlist是基于链表的数据结构,地址是任意的,所以在开辟内存空间的时候不需要等一个连续的地址。因此对于新增和删除操作方面是比较有优势的。Linkedlist适用于头尾操作或插入指定位置的场景。

    缺点:因为Linkedlist要移动指针,所以查询性能操作比较低。

  适用场景:

    当需要对数据进行对此访问的情况下选用ArrayList,当需要对数据进行多次增加删除和修改的时候采用Linkedlist

 

Arraylist和Vector区别

  1. Vector是多线程安全的,线程安全就是说多线程访问同一代码,不会产生不确定的结果。而ArrayList不是,这个可以从源码中看出,Vector类中的方法很多有synchronized进行修饰,这样就导致了Vector在效率上无法与ArrayList相比;

  2. 两个都是采用的线性连续空间存储元素,但是当空间不足的时候,两个类的增加方式是不同。

  3. Vector可以设置增长因子,而ArrayList不可以。

  4. Vector是一种老的动态数组,是线程同步的,效率很低,一般不赞成使用。

 

HashMap和Hashtable的区别

  1、HashMap去掉了Hashtable的contains方法,但增加了containsValue、containsKey方法。

  2、Hashtable是同步的,而HashMap是非同步的,效率上比Hashtable要高。

  3、HashMap允许键值为空,而Hashtable不允许。

  4、HashMap适用于Map中插入、删除和定位元素。

  5、TreeMap适用于自然顺序或自定义顺序遍历键。

 

HashSet 和 HashMap的区别

  1、HashSet是set的hash实现,hashset中的值不能重复是通过hashmap的key来实现的。

  2、HashMap是map接口的hash实现,key的唯一性是通过key值hash值的唯一来确定的。

 

HashMap 和 ConcurrentHashMap 的区别

  1、ConcurrentHashMap是线程安全的HashMap的实现。它对数组进行了分割分段(Segment),然后在每一个分段上都用lock锁进行保护。而HashMap没有锁保护。

  2、HashMap的键值对允许有null,但ConcurrentHashMap不允许。

 

以上是关于Java基础知识盘点- 集合篇的主要内容,如果未能解决你的问题,请参考以下文章

JAVA热点基础大盘点<深入解析ArraryList>

JAVA热点基础大盘点<深入解析ArraryList>

#yyds干货盘点#JAVA三年经验面试题

Java核心知识盘点- 缓存使用

Gradle+Groovy基础篇#yyds干货盘点#

Java学习笔记系列-基础篇-集合