java集合详细总结

一、

Collections:它的出现给集合操作提供了更多的功能。这个类不需要创建对象,内部提供的都是静态方法。

Collection:单列集合

	|--List  有序,可重复
	|--ArrayList
		底层数据结构是数组,查询快,增删慢
		线程不安全,效率高
	|--Vector
		底层数据结构是数组,查询快,增删慢
		线程安全,效率低
	|--LinkedList
		底层数据结构是链表,查询慢,增删快
		线程不安全,效率高
	|--Set  无序,唯一
	|--HashSet  底层数据结构是哈希表,HashCode()和equals方法	|--TreeSet  底层数据结构是二叉树(红黑树) 
		Comparable(自然排序)  compareTo()
		Comparator(比较器排序)  compare()

Map集合

|--Hashtable:底层是哈希表数据结构,是线程同步的。不可以存储null键,null值。

|--HashMap:底层是哈希表数据结构,是线程不同步的。可以存储null键,null值。替代了Hashtable.

|--TreeMap:底层是二叉树结构,可以对map集合中的键进行指定顺序的排序。

二、Map集合框架:Map

1、Collection集合是单列集合
		Map是双列集合,又叫映射。有键和值。都是引用类型
2、特点:键是唯一,值可以重复
3、Api:
	键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
4、功能:
	A:添加功能:
		 V put(K key, V value) 
      			将指定的值与此映射中的指定键关联(可选操作)。 
			当第一添加该键的时候,返回null
			如果该键不是第一次出现,使用新值替换旧值,并返回旧值。

		 void putAll(Map m) 
      			从指定映射中将所有映射关系复制到此(this)映射中(可选操作)。 
	B:删除功能:
		 void clear() 从此映射中移除所有映射关系(可选操作)。
		 V remove(Object key) 
     			 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。  

	C:获取功能:
		Set> entrySet() 
      			返回此映射中包含的映射关系的 Set 视图。 
		 V get(Object key) 
      			返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
		Set keySet() 
      			返回此映射中包含的键的 Set 视图。 
		 int size() 
      			返回此映射中的键-值映射关系数。 
		Collection values() 
      			返回此映射中包含的值的 Collection 视图 

	D:判断功能:
		 boolean containsKey(Object key)  
			如果此映射包含指定键的映射关系,则返回 true。 
		 boolean containsValue(Object value) 
			如果此映射将一个或多个键映射到指定值,则返回 true。
		 boolean isEmpty() 
      			如果此映射未包含键-值映射关系,则返回 true。  

三、Map集合的遍历:

1、方式一:使用keySet和get方法

方式二:使用Set> entrySet() 

使用集合的技巧:

看到Array就是数组结构,有角标,查询速度很快。

看到link就是链表结构:增删速度快,而且有特有方法。addFirst; addLast; removeFirst(); removeLast(); getFirst();getLast();

看到hash就是哈希表,就要想要哈希值,就要想到唯一性,就要想到存入到该结构的中的元素必须覆盖hashCode,equals方法。

看到tree就是二叉树,就要想到排序,就想要用到比较。


比较的两种方式

一个是Comparable:覆盖compareTo方法;

一个是Comparator:覆盖compare方法。

LinkedHashSet,LinkedHashMap:这两个集合可以保证哈希表有存入顺序和取出顺序一致,保证哈希表有序。


集合什么时候用?

当存储的是一个元素时,就用Collection。当存储对象之间存在着映射关系时,就使用Map集合。

保证唯一,就用Set。

不保证唯一,就用List。

list中:如果要安全就用vector
不要安全,查询多,用ArrayList,增删多用LinkedList

什么都不懂,就用ArrayList


你可能感兴趣的:(java)