Java修炼之路——基础篇——Java集合类

集合类的全景图
Java修炼之路——基础篇——Java集合类
常用集合类特性

1. Collection:每个位置对应一个元素
 	   1.1: List	存放有序元素,允许重复元素,允许元素为null
 	     1.1.1: ArrayList:
 	     		内部结构为数组;
 	     		初始容量为10;
 	     		插入、删除的移动速度慢;动态扩容1.5倍;
 	     		线程不安全;
 	     1.1.2: LinkedList:
 	   		   内部结构为双向链表;
 	   		   线程不安全;  
 	    1.1.3: Vector:
 	   		   	内部结构是数组,与ArrayList很像;
 	   		   	初始容量为10;
 	   		   	线程安全;
 	   		   	动态扩容为原来的两倍;
 	   		   	已废弃,替代品为:Collections.synchronizedList(ArrayList),使用包装类,改进点为不再在每个方法都用synchronized修饰,而是细化,需要的代码块再使用,并且锁定的对象改为包装类内置的一个final Object对象;
 	1.2: Set   	不允许重复元素
 			1.2.1: HashSet
 					底层实现是HashMap,存入key,value是固定的对象;
 					存放无序(根据hash值确定索引位置);
 					允许元素为null;	   	
 			1.2.2: LinkedHashSet 	 
 						底层基于LinkedHashMap;其他方面和HashSet相同;
 						因为有序,所以遍历性能比HashSet高,但是插入、删除性能差一些;
 			1.2.3: TreeSet
 						是SortedSet接口的唯一实现类;
 						不允许重复元素,不允许元素为null(元素为null,排序算法那块会导致空指针);
 						自动对元素进行排序; 	 			
 	   	 	   
 2. Map:以key-value键值对存在
	   	2.1: HashMap
	   				数据结构为桶(数组)+ 链表 + 红黑树(JDK 1.8开始有红黑树)实现;
	   				初始容量为16;
	   				允许key和value为null,key重复会覆盖;
	   				存放无序(根据hash值来进行散列),线程不安全;
	   	2.1: LinkedHashMap
	   				数据结构为双向链表;
	   				存放有序,线程不安全;
		2.1: TreeMap
	   				key不能为null,value可以为null;
	   				存放有序(字符串默认为字典排序),线程不安全;   				


拓展

  1. 红黑树、以及在TreeMap、HashMap中的应用