集合是 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 |
---|---|---|---|
有序性 | 有序 | 無序 | 無序(鍵值對) |
允許重復元素 | 允許 | 不允許 | 鍵不允許重復,值允許 |
索引訪問 | 支持 | 不支持 | 不支持 |
適用場景 | 需要有序和重復元素的場景 | 需要去重的場景 | 需要鍵值對映射的場景 |
?