java中的集合总结

集合总结

单列结合(Collocation)

List 有序可以重复

  • ArrayList:ArrayList是查询快,增删改慢的一种集合,线程不安全,所以效率较高,底层数据结构是数组
  • Vector:Vector是查询快,增删改慢的集合,线程安全,但是效率低,底层数据结构是数组
  • LinkedList:LinkList是查询慢,增删改快的集合,线程不安全,效率高,底层数据结构是链表

set 无序不可重复

  • HashSet:HashSet线程不安全,底层数据结构是哈希表,哈希表是依赖hashCode()和equals()方法的,依赖这两个方法来保证集合的唯一性。执行原理:首先判断hashCode()的值是否相等,如果不相等直接就添加到集合中,如果相等那么要继续执行equals()方法,如果返回值还相等,那么就是说面元素重复不添加,如果返回不相等,则直接添加到集合中,这样提高了效率判断元素是否重复的效率。
  • LinkedHashSet:LinkedHashSet是线程安全的集合,底层数据结构是链表和哈希表,链表保证了元素的有序,哈希表保证了元素的唯一性。
  • TreeSet:TreeSet底层数据结构是二叉树,通过比较元素的返回值是否为0来决定元素的唯一性。有序性的保证可以让元素所属的类去实现Comparable接口,或者让集合接收一个Comparator的实现类对象。

常用方法

add():添加元素
remove():删除元素
contains():判断是否包含元素
iterator():遍历的迭代器,一般使用增强for(底层仍然是迭代器)
size():返回集合元素个数

双列结合(map)

Map

Map集合存储的是键值对形式的元素,键唯一,值可重复。Map的数据结构仅仅针对键有效,与值无关。

  • HashMap:HashMap是线程不安全,效率较高的集合,底层数据结构是哈希表,那么他保证元素的唯一性也是通过hashCode()和equals()方法。
  • LinkenHashMap:LinkedHashMap底层数据结构由链表和哈希表组成。由链表保证元素有序。由哈希表保证元素唯一。
  • Hashtable:Hashtable的底层数据结构是哈希表。线程安全,效率低,哈希表也是依赖两个方法hashCode()和equals()。
  • TreeMap:TreeMap底层数据结构是二叉树。通过比较元素的返回值是否为0来决定元素的唯一性。有序性的保证可以让元素所属的类去实现Comparable接口,或者让集合接收一个Comparator的实现类对象。

常用方法

		put():添加元素
		remove():删除元素
		containskey(),containsValue():是否包含键、值
		keySet():返回键集合Set
		get():获取键对应的值
		value():获取值对应的键
		entrySet():返回‘键值对’集合
		size():返回集合元素的个数

集合使用时的选择

if(所需是否为双列集合){
	if(集合的需要排序){
		TreeMap
	}else {
		HashMap
	}
}else {
	if(元素是否要求不可重复){
		if(元素是否要求排序){
			TreeSet
		}else{
			HashSet
		}
	}else {
		if(线程是否要求安全){
			Vector
		}else if(是否要求增删改操作快){
			LinkedList
		}else {
			ArrayList
		}
	}	
}

你可能感兴趣的:(java)