Java知识点小总结(二)

来源:互联网 发布:保险公司业务数据分析 编辑:程序博客网 时间:2024/05/15 12:29

1、Collection

各常用集合类关系如下(Collection是单列集合,Map是双列集合):


(1)List:

List是有序的Collection,可以对列表中每个元素的插入位置进行精确地控制,可以根据元素的整数索引访问元素,并搜索列表中的元素,可重放重复元素,元素的存取是有序的。

~Vector:线程安全,查询速度慢,底层数据结构是数组,当存储元素个数超过容量时,Vector存储空间默认增长为原来的两倍,并且可以设置增长空间的大小。

~ArrayList:线程不安全,查询速度快,底层数据结构是数组,当存储元素个数超过容量时,ArrayList默认增长为原来的1.5倍,不能设置增长空间的大小.

~LinkedList:线程不安全,查询速度快,底层数据结构是链表。

(2)Set:

Set中元素是无序的,不可重复。没有索引,取出元素的方法只有迭代器。

~HashSet:线程不安全,存取速度快,通过元素的hasCode方法和equals方法保证元素唯一性。HashSet是基于HashMap实现的,详情参考-->java中的HashSet详解

~TreeSet:线程不安全,可以对Set集合中的元素进行排序,通过compareTo方法或compare方法来保证数据的唯一性,元素是以二叉树的形式存放的。TreeSet是基于Navigable实现的,详情参考-->TreeSet源码解析

(3)Map:

Map是双列集合,元素按键值对存储,无放入顺序。

~Treemap:继承AbstractMap,线程不安全,元素有序,TreeMap是基于红黑树实现的,详情参考-->TreeMap

~HashMap:继承AbstractMap,线程不安全,根据键的hashcode值存储数据,根据键可以直接获取它的值;最多允许一条记录的键为空(因为HashMap如果有多个键相同的话新的键对应的值会代替旧的键对应的值),允许多条记录的值为空;没有contains方法有containsvalue和containsKey方法;可以用Collections的synchronizedMap方法使HashMap具有同步的能力;迭代用Iterator;默认容量大小为16,容量必须是2的整数次幂,最大容量是2^31.详情参考-->HashMap、HashTable、TreeMap 深入分析及源码解析

~HashTable:继承Dictionary,线程安全,键值不能为空,有contains方法,迭代用Enumeration,默认容量大小是11,增加方式是2倍的之前的容量+1。

~ConcurrentHashMap:通过分段锁实现线程安全,键值均不能为空。

Java里多个Map的性能比较(TreeMap、HashMap、ConcurrentSkipListMap)






0 0
原创粉丝点击