Java集合框架

Java集合框架:

Collection集合的最大接口)继承关系

Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行,一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection子接口,如ListSet

1List:有序,可以存放重复的内容
2Set:无序,不能存放重复的内容,所以的重复内容靠hashCode()equals()两个方法区分
3Queue:队列接口
4SortedSet:可以对集合中的数据进行排序

 

List接口

按照元素插入的顺序进行存放,元素可以重复。

实现List的子类的特点:
1ArrayList:线程不安全,查询速度快。底层都是基于数组来储存集合元素,封装了一个动态的Object[]数组,是一种顺序存储的线性表。
2Vector:线程安全,但速度慢,已被ArrayList替代。
3LinkedList:线程不安全,增删速度快,没有同步方法,是一个链式存储的线性变,本质上是一个双向链表。

 

 

Set接口

Set接口也是Collection的一种扩展,而与List不同的是,在Set中的对象元素不能重复,也就是说你不能把同样的东西两次放入同一个Set容器中。它的常用具体实现有HashSetTreeSet

SortedSet接口(实现了Set接口)其实这就是个Set接口的输出接口

实现Set接口子类的特点:
1HashSet:底层数据结构由HashMap的键来实现。不保证集合中元素的顺序,即不能保证迭代的顺序与插入的顺序一致。是线程不安全的。
2TreeSet:有序的存放,线程不安全,可以对Set集合中的元素进行排序,由红黑树来实现排序,TreeSet实际上也是SortedSet接口的子类,其在方法中实现了SortedSet的所有方法,并使用comparator()方法进行排序。
3LinkedHashSet:底层由链表实现,按照元素插入的顺序进行迭代,即迭代输出的顺序与插入的顺序保持一致

 

Map接口

Map是一种把键对象和值对象进行关联的容器,而一个值对象又可以是一个Map,依次类推,这样就可形成一个多级映射。对于键对象来说,像Set一样,一个Map容器中的键对象不允许重复,这是为了保持查找结果的一致性Map没有继承Collection接口Map提供keyvalue的映射。一个Map中不能包含相同的key,每个key只能映射一个valueMap接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射。由于Map中作为key的对象将通过计算其散列函数来确定与之对应的value的位置,因此任何作为key的对象都必须实现hashCodeequals方法。

实现Map接口的子类:
1HashtableHashtable继承Dictionary<K,V>类,实现了Map接口,实现一个key-value映射的哈希表。任何非空(non-null)的对象都可作为key或者value。是同步的。
2HashMapHashMapHashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null valuenull key
但是将HashMap视为Collection时(values()方法可返回Collection),其迭代子操作时间开销和HashMap的容量成比例。因此,如果迭代操作的性能相当重要的话,不要将HashMap的初始化容量设得过高,或者load factor过低。
3LinkedHashMap:是HashMap的一个子类,如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现。KeyValue都允许空;Key重复会覆盖、Value允许重复;非线程安全;有序。
4TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序

原文地址:https://www.cnblogs.com/marrycode/p/14515666.html