集合是 Java 中用来存储一组对象的容器。与数组相比,集合更加灵活和强大,支持动态增删元素、自动扩容、多种数据结构等特性。下面我会用通俗易懂的语言解释集合的基本使用。
1. 什么是集合?
-
集合就像是一个“容器”,可以用来装很多对象(比如数字、字符串、自定义对象等)。
-
Java 提供了多种集合类型,比如
List
、Set
、Map
,每种集合有不同的特点和用途。
2. 常用的集合类型
2.1 List(列表)
-
特点:
-
有序(元素有固定的顺序)。
-
允许重复元素。
-
可以通过索引访问元素。
-
-
常用实现类:
-
ArrayList
:基于数组实现,查询快,增删慢。 -
LinkedList
:基于链表实现,增删快,查询慢。
-
2.2 Set(集合)
-
特点:
-
无序(元素没有固定顺序)。
-
不允许重复元素。
-
-
常用实现类:
-
HashSet
:基于哈希表实现,查询和增删都快。 -
TreeSet
:基于红黑树实现,元素会自动排序。
-
2.3 Map(映射)
-
特点:
-
存储键值对(
key-value
)。 -
键不能重复,值可以重复。
-
-
常用实现类:
-
HashMap
:基于哈希表实现,查询和增删都快。 -
TreeMap
:基于红黑树实现,键会自动排序。
-
3. 集合的基本操作
3.1 创建集合
-
使用
new
关键字创建集合对象。 -
例如:
java
List<String> list = new ArrayList<>(); // 创建一个 ArrayList Set<Integer> set = new HashSet<>(); // 创建一个 HashSet Map<String, Integer> map = new HashMap<>(); // 创建一个 HashMap
3.2 添加元素
-
使用
add()
方法向List
或Set
中添加元素。 -
使用
put()
方法向Map
中添加键值对。 -
例如:
java
list.add("Apple"); // 向 List 中添加元素 set.add(10); // 向 Set 中添加元素 map.put("Apple", 10); // 向 Map 中添加键值对
3.3 获取元素
-
使用
get()
方法从List
或Map
中获取元素。 -
例如:
java
String fruit = list.get(0); // 获取 List 中第一个元素 int price = map.get("Apple"); // 获取 Map 中键为 "Apple" 的值
3.4 删除元素
-
使用
remove()
方法从集合中删除元素。 -
例如:
java
list.remove("Apple"); // 从 List 中删除元素 set.remove(10); // 从 Set 中删除元素 map.remove("Apple"); // 从 Map 中删除键值对
3.5 遍历集合
-
使用增强型 for 循环遍历集合。
-
例如:
java
for (String item : list) {System.out.println(item); // 遍历 List }for (Integer num : set) {System.out.println(num); // 遍历 Set }for (Map.Entry<String, Integer> entry : map.entrySet()) {System.out.println(entry.getKey() + ": " + entry.getValue()); // 遍历 Map }
4. 集合的常用方法
方法名 | 作用 | 示例 |
---|---|---|
add() | 添加元素 | list.add("Apple"); |
remove() | 删除元素 | list.remove("Apple"); |
get() | 获取元素 | list.get(0); |
size() | 获取集合大小 | list.size(); |
contains() | 检查是否包含元素 | list.contains("Apple"); |
clear() | 清空集合 | list.clear(); |
isEmpty() | 检查集合是否为空 | list.isEmpty(); |
keySet() | 获取 Map 的所有键 | map.keySet(); |
values() | 获取 Map 的所有值 | map.values(); |
entrySet() | 获取 Map 的所有键值对 | map.entrySet(); |
5. 示例代码
以下是一个完整的示例,演示集合的基本使用:
java
import java.util.*;public class CollectionExample {public static void main(String[] args) {// List 示例List<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Orange");System.out.println("List: " + list);// Set 示例Set<Integer> set = new HashSet<>();set.add(10);set.add(20);set.add(30);System.out.println("Set: " + set);// Map 示例Map<String, Integer> map = new HashMap<>();map.put("Apple", 10);map.put("Banana", 20);map.put("Orange", 30);System.out.println("Map: " + map);// 遍历 ListSystem.out.println("遍历 List:");for (String item : list) {System.out.println(item);}// 遍历 MapSystem.out.println("遍历 Map:");for (Map.Entry<String, Integer> entry : map.entrySet()) {System.out.println(entry.getKey() + ": " + entry.getValue());}} }
6. 总结
-
集合是 Java 中用来存储一组对象的容器,比数组更灵活。
-
常用的集合类型有
List
、Set
和Map
,每种集合有不同的特点。 -
集合支持动态增删元素、自动扩容、多种数据结构等特性。
-
掌握集合的基本操作(如添加、删除、遍历)是 Java 编程的基础。
对比
特性 | List | Set | Map |
---|---|---|---|
有序性 | 有序 | 无序 | 无序(键值对) |
允许重复元素 | 允许 | 不允许 | 键不允许重复,值允许 |
索引访问 | 支持 | 不支持 | 不支持 |
适用场景 | 需要有序和重复元素的场景 | 需要去重的场景 | 需要键值对映射的场景 |