Java集合框架是Java提供的一组用于存储和操作数据的类和接口,主要分为两大体系:CollectionMap。下面详细介绍它们包含的主要接口和类以及继承关系。

1. Collection体系

Collection是单列集合的根接口,它定义了一些通用的方法,如添加、删除、遍历等。Collection体系又可以分为ListSetQueue三个子接口。

主要接口

  • List:有序、可重复的集合,用户可以精确控制每个元素的插入位置。
    • ArrayList:基于动态数组实现,支持随机访问,插入和删除操作效率较低。
    • LinkedList:基于双向链表实现,插入和删除操作效率较高,随机访问效率较低。
    • Vector:线程安全的动态数组,与ArrayList类似,但性能较低。
    • Stack:继承自Vector,实现了栈的后进先出(LIFO)特性。
  • Set:无序、不可重复的集合。
    • HashSet:基于哈希表实现,不保证元素的顺序。
    • LinkedHashSet:继承自HashSet,基于哈希表和链表实现,保证元素的插入顺序。
    • TreeSet:基于红黑树实现,保证元素按照自然顺序或指定的比较器顺序排序。
  • Queue:队列接口,遵循先进先出(FIFO)原则。
    • LinkedList:除了实现List接口,还实现了Queue接口,可以作为队列使用。
    • PriorityQueue:基于优先堆实现,元素按照自然顺序或指定的比较器顺序排序。

继承关系

java.lang.Object
    └─ java.util.Collection
        ├─ java.util.List
        │   ├─ java.util.ArrayList
        │   ├─ java.util.LinkedList
        │   └─ java.util.Vector
        │       └─ java.util.Stack
        ├─ java.util.Set
        │   ├─ java.util.HashSet
        │   │   └─ java.util.LinkedHashSet
        │   └─ java.util.TreeSet
        └─ java.util.Queue
            ├─ java.util.LinkedList
            └─ java.util.PriorityQueue

2. Map体系

Map是双列集合的根接口,用于存储键值对(key-value),键是唯一的。

主要接口和类

  • HashMap:基于哈希表实现,不保证键值对的顺序。
  • LinkedHashMap:继承自HashMap,基于哈希表和链表实现,保证键值对的插入顺序。
  • TreeMap:基于红黑树实现,保证键按照自然顺序或指定的比较器顺序排序。
  • Hashtable:线程安全的哈希表,与HashMap类似,但性能较低。
  • Properties:继承自Hashtable,用于处理属性文件,键和值都是字符串类型。

继承关系

java.lang.Object
    └─ java.util.Map
        ├─ java.util.HashMap
        │   └─ java.util.LinkedHashMap
        ├─ java.util.TreeMap
        ├─ java.util.Hashtable
        │   └─ java.util.Properties

示例代码

import java.util.*;

public class CollectionExample {
    public static void main(String[] args) {
        // List示例
        List<String> list = new ArrayList<>();
        list.add("apple");
        list.add("banana");
        System.out.println("List: " + list);

        // Set示例
        Set<String> set = new HashSet<>();
        set.add("apple");
        set.add("banana");
        System.out.println("Set: " + set);

        // Queue示例
        Queue<String> queue = new LinkedList<>();
        queue.add("apple");
        queue.add("banana");
        System.out.println("Queue: " + queue);

        // Map示例
        Map<String, Integer> map = new HashMap<>();
        map.put("apple", 1);
        map.put("banana", 2);
        System.out.println("Map: " + map);
    }
}

通过上述代码,你可以看到如何使用CollectionMap体系中的不同接口和类。