Java 集合框架提供了丰富的接口和实现,用于存储、检索和操作对象。集合主要分为 Collection 和 Map 两个体系,每个体系下有多个子接口和实现。以下是每种主要集合的详细介绍,包括特性、方法介绍和使用示例,以及它们的常见实现类。
1. Collection 接口
1.1 List 接口
-
特性: 有序集合,允许重复元素。
-
实现类:
ArrayList
、LinkedList
、Vector
。 -
方法介绍:
add(E element)
: 在集合尾部添加元素。get(int index)
: 获取指定位置的元素。set(int index, E element)
: 替换指定位置的元素。remove(Object element)
: 移除指定元素。size()
: 返回集合中的元素个数。- …
-
使用示例:
List<String> list = new ArrayList<>(); list.add("Java"); list.add("Python"); list.add("C++"); String element = list.get(0); list.set(1, "JavaScript"); list.remove("C++"); for (String language : list) { System.out.println(language); }
1.2 Set 接口
-
特性: 无序集合,不允许重复元素。
-
实现类:
HashSet
、LinkedHashSet
、TreeSet
。 -
方法介绍:
add(E element)
: 向集合添加元素。contains(Object element)
: 判断是否包含指定元素。remove(Object element)
: 移除指定元素。size()
: 返回集合中的元素个数。- …
-
使用示例:
Set<String> set = new HashSet<>(); set.add("Apple"); set.add("Banana"); set.add("Orange"); boolean containsOrange = set.contains("Orange"); set.remove("Banana"); for (String fruit : set) { System.out.println(fruit); }
1.3 Queue 接口
-
特性: 队列,用于存储和处理元素的先进先出(FIFO)顺序。
-
实现类:
LinkedList
、PriorityQueue
。 -
方法介绍:
offer(E element)
: 将元素添加到队列。poll()
: 获取并删除队首元素。peek()
: 获取队首元素但不删除。size()
: 返回队列中的元素个数。- …
-
使用示例:
Queue<String> queue = new LinkedList<>(); queue.offer("One"); queue.offer("Two"); queue.offer("Three"); String element = queue.poll(); String peekElement = queue.peek();
2. Map 接口
2.1 HashMap
-
特性: 无序键值对集合,允许键和值为 null。
-
实现类:
HashMap
。 -
方法介绍:
put(K key, V value)
: 将键值对添加到 Map。get(Object key)
: 根据键获取值。containsKey(Object key)
: 判断是否包含指定键。remove(Object key)
: 移除指定键值对。size()
: 返回 Map 中的键值对个数。- …
-
使用示例:
Map<String, Integer> map = new HashMap<>(); map.put("Java", 1); map.put("Python", 2); map.put("C++", 3); int javaRank = map.get("Java"); boolean containsKey = map.containsKey("Python"); map.remove("C++"); for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); }
2.2 LinkedHashMap
-
特性: 有序键值对集合,按插入顺序或访问顺序排序,允许键和值为 null。
-
实现类:
LinkedHashMap
。 -
方法介绍:
put(K key, V value)
: 将键值对添加到 Map。get(Object key)
: 根据键获取值。containsKey(Object key)
: 判断是否包含指定键。remove(Object key)
: 移除指定键值对。size()
: 返回 Map 中的键值对个数。- …
-
使用示例:
Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("Monday", 1);
linkedHashMap.put("Tuesday", 2);
linkedHashMap.put("Wednesday", 3);
int tuesdayValue = linkedHashMap.get("Tuesday");
linkedHashMap.remove("Wednesday");
for (Map.Entry<String, Integer> entry : linkedHashMap.entrySet()) {
System
.out.println(entry.getKey() + ": " + entry.getValue());
}
2.3 TreeMap
-
特性: 有序键值对集合,按照键的自然顺序或自定义顺序排序,不允许键为 null。
-
实现类:
TreeMap
。 -
方法介绍:
put(K key, V value)
: 将键值对添加到 Map。get(Object key)
: 根据键获取值。containsKey(Object key)
: 判断是否包含指定键。remove(Object key)
: 移除指定键值对。size()
: 返回 Map 中的键值对个数。- …
-
使用示例:
Map<String, Integer> treeMap = new TreeMap<>(); treeMap.put("Zebra", 5); treeMap.put("Lion", 3); treeMap.put("Elephant", 8); int lionValue = treeMap.get("Lion"); treeMap.remove("Zebra"); for (Map.Entry<String, Integer> entry : treeMap.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); }
3. Collections 工具类
3.1 排序
-
方法介绍:
List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5); Collections.sort(numbers); // 默认升序排序
3.2 随机化
-
方法介绍:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); Collections.shuffle(numbers); // 随机打乱元素顺序
3.3 查找
-
方法介绍:
List<String> words = Arrays.asList("apple", "banana", "cherry"); int index = Collections.binarySearch(words, "banana"); // 二分查找
3.4 反转
-
方法介绍:
List<Character> chars = Arrays.asList('a', 'b', 'c', 'd'); Collections.reverse(chars); // 反转元素顺序
3.5 替换和填充
-
方法介绍:
List<String> letters = new ArrayList<>(Arrays.asList("a", "b", "c", "d")); Collections.replaceAll(letters, "a", "z"); // 替换指定元素 Collections.fill(letters, "x"); // 使用指定元素填充集合
4. 总结
-
List: 有序集合,允许重复元素。常见实现有
ArrayList
、LinkedList
、Vector
。 -
Set: 无序集合,不允许重复元素。常见实现有
HashSet
、LinkedHashSet
、TreeSet
。 -
Queue: 队列,用于存储和处理元素的先进先出(FIFO)顺序。常见实现有
LinkedList
、PriorityQueue
。 -
Map: 键值对集合,键唯一。常见实现有
HashMap
、LinkedHashMap
、TreeMap
。 -
Collections 工具类: 提供了对集合的各种操作,如排序、随机化、查找、反转、替换和填充等。