集合框架概述
Java集合框架是Java提供的用于存储和操作一组对象的数据结构。它包含了一系列接口和实现类,提供了各种不同的数据存储和检索方式。
集合框架体系结构
Java集合框架主要由两个根接口组成:
- Collection接口:存储一组独立的元素
- Map接口:存储键值对(key-value pairs)
List接口及实现类
List是一个有序集合,允许重复元素。主要实现类包括ArrayList、LinkedList和Vector。
ArrayList
ArrayList是基于动态数组实现的,支持快速随机访问,但在中间插入或删除元素较慢。
import java.util.ArrayList;
import java.util.List;
public class ArrayListExample {
public static void main(String[] args) {
// 创建ArrayList
List list = new ArrayList<>();
// 添加元素
list.add("Apple");
list.add("Banana");
list.add("Orange");
// 访问元素
System.out.println(list.get(0)); // 输出: Apple
// 修改元素
list.set(1, "Grape");
// 遍历元素
for(String fruit : list) {
System.out.println(fruit);
}
// 删除元素
list.remove("Orange");
System.out.println("列表大小: " + list.size());
}
}
LinkedList
LinkedList是基于双向链表实现的,在插入和删除元素时效率较高,但随机访问较慢。
import java.util.LinkedList;
import java.util.List;
public class LinkedListExample {
public static void main(String[] args) {
// 创建LinkedList
List linkedList = new LinkedList<>();
// 添加元素
linkedList.add("First");
linkedList.add("Second");
linkedList.add("Third");
// 在开头添加元素
((LinkedList) linkedList).addFirst("New First");
// 在末尾添加元素
((LinkedList) linkedList).addLast("New Last");
// 获取第一个和最后一个元素
System.out.println("第一个元素: " + ((LinkedList) linkedList).getFirst());
System.out.println("最后一个元素: " + ((LinkedList) linkedList).getLast());
}
}
Set接口及实现类
Set是一个不包含重复元素的集合。主要实现类包括HashSet、LinkedHashSet和TreeSet。
HashSet
HashSet基于哈希表实现,不保证元素的顺序,允许null元素。
import java.util.HashSet;
import java.util.Set;
public class HashSetExample {
public static void main(String[] args) {
// 创建HashSet
Set set = new HashSet<>();
// 添加元素
set.add("Apple");
set.add("Banana");
set.add("Orange");
set.add("Apple"); // 重复元素不会被添加
// 输出集合大小
System.out.println("集合大小: " + set.size()); // 输出: 3
// 检查是否包含元素
if(set.contains("Banana")) {
System.out.println("包含Banana");
}
// 删除元素
set.remove("Orange");
// 遍历元素
for(String fruit : set) {
System.out.println(fruit);
}
}
}
Map接口及实现类
Map存储键值对,每个键最多映射到一个值。主要实现类包括HashMap、LinkedHashMap和TreeMap。
HashMap
HashMap基于哈希表实现,允许null键和null值,不保证映射的顺序。
import java.util.HashMap;
import java.util.Map;
public class HashMapExample {
public static void main(String[] args) {
// 创建HashMap
Map map = new HashMap<>();
// 添加键值对
map.put("Apple", 3);
map.put("Banana", 5);
map.put("Orange", 2);
// 获取值
System.out.println("Apple的数量: " + map.get("Apple"));
// 修改值
map.put("Apple", 10);
// 检查是否包含键或值
if(map.containsKey("Banana")) {
System.out.println("包含键Banana");
}
// 获取所有键
System.out.println("所有键: " + map.keySet());
// 获取所有值
System.out.println("所有值: " + map.values());
// 遍历键值对
for(Map.Entry entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}