javase集合(list、set、map、Arraylist与linkedList、HashMap与HashTable、HashTable与ConcurrentHashMap)

1、java中的集合

(1)单列集合(collection):

List集合:存取有序,有索引,元素可以重复

Set集合:存取无序,没有索引,元素不可以重复(根据equals和hashCode判断),也就是说如果一个对象要存储在Set中,必须重写equals和hashCode方法。

(2)双列集合(Map):

 2、Arraylist与linkedList的区别

(1)特点:

         Arraylist底层使用的是数组:具有索引,查询快,增删慢,数组在内存中是一块连续的内存,插入或删除需要移动大量的元素

         LinkedList底层使用的是链表:当前元素分为数据域和指针域,指针域存放下一个或上一个元素的地址,查询时从头部开始,一个一个地找,查询效率较低。插入时不需要移动内存中的元素,只需要改变引用的指向即可,所以插入或删除的效率高。

(2)使用场景:

ArrayList:使用在查询比较多,插入删除较少的情况

LinkedList:使用在查询比较少,插入和删除比较多的情况

3、HashMap与HashTable的区别和联系

(1)相同点:

都可以用来存储key_value的数据

(2)不同点:

HashMap可以把null作为key或者value,而HashTable不可以

HashMap线程不安全,效率较高,HashTable线程安全,效率较低

4、HashTable与ConcurrentHashMap的区别和联系

使用分段,相当于把一个hashmap分成多个段,每一段分配一把锁,这样就可以支持多线程访问,所以,多线程的情况下效率较高。

原文地址:https://www.cnblogs.com/zhai1997/p/12450896.html