Java集合框架是Java提供的一组用于存储和操作数据的类和接口,主要分为两大体系:Collection
和Map
。下面详细介绍它们包含的主要接口和类以及继承关系。
1. Collection
体系
Collection
是单列集合的根接口,它定义了一些通用的方法,如添加、删除、遍历等。Collection
体系又可以分为List
、Set
和Queue
三个子接口。
主要接口
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);
}
}
通过上述代码,你可以看到如何使用Collection
和Map
体系中的不同接口和类。