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分成多个段,每一段分配一把锁,这样就可以支持多线程访问,所以,多线程的情况下效率较高。