Java集合类

1. Java的集合类

  • Java的集合主要是由MapCollection这两个接口派生出来的。Collection接口又派生出三个重要的接口SetListQueue

  • Java所有的集合类,都是SetListMapQueue这几个接口的实现类。

    • Set接口: Set接口的主要实现类有:HashSet, TreeSet, LinkedHashSet。Set集合最大的特征就是不允许存储重复的元素
    • List接口: List接口的主要实现类有:ArrayList, LinkedList。List接口里面存储的元素是有序的,并且允许存放重复的元素
    • Map接口: Map接口的主要实现类有:HashMapTreeMap, LinkedHashMap。Map接口存放的就是键值对。
    • Queue接口: Queue接口的主要实现类有:ArrayDeque, PriorityQueue。Queue接口主要是用来实现队列的。

2. 线程安全集合类

  • Vector: 这个和ArrayList类比较像,只不过Vector中的每个方法都被synchronized关键字修饰,所以Vector集合是线程安全的。
  • HashTable: 这个和HashMap类比较像,同样的HashTable中的每个方法都被synchronized关键字修饰。
  • java.util.concurrent包提供的都是线程安全的集合: ConcurrentHashMap通过锁分离技术实现了线程安全。

3. 线程不安全集合类

  • ArrayListLinkedListHashSetHashMapTreeSetTreeMap这些类都是线程不安全的集合类,只能在单线程环境下使用,在多线程环境下,如果没有合适的同步措施,就会造成数据不一致等并发问题。