在Java开发中,集合框架是处理数据时不可或缺的工具之一。今天,我们来深入了解一下Java集合框架中的**
List
、Map
和Set
**,并探讨它们的常见方法操作。
目录
[1.1 List集合介绍](#1.1 List集合介绍)
[1.2 List集合的常见方法](#1.2 List集合的常见方法)
[1.3 List的不同实现类](#1.3 List的不同实现类)
[2.1 Map集合介绍](#2.1 Map集合介绍)
[2.2 Map集合的常见方法](#2.2 Map集合的常见方法)
[2.3 Map的不同实现类](#2.3 Map的不同实现类)
[3.1 Set集合介绍](#3.1 Set集合介绍)
[3.2 Set集合的常见方法](#3.2 Set集合的常见方法)
[3.3 Set的不同实现类](#3.3 Set的不同实现类)

一、List集合
1.1 List集合介绍
List
是Java集合框架中的一个接口,它是一个有序的集合,允许存储重复的元素。List
中的元素可以通过索引进行访问,这使得它在需要频繁访问元素的场景中非常有用。常见的List
实现类有ArrayList
和LinkedList
。
1.2 List集合的常见方法
添加元素
-
add(E e)
:将指定元素添加到列表末尾。 -
add(int index, E element)
:在指定位置插入元素。
java
import java.util.ArrayList;
import java.util.List;
public class ListAddExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Apple"); // 添加到末尾
list.add(0, "Banana"); // 在索引0处插入
System.out.println("List: " + list);
}
}
获取元素
-
get(int index)
:返回列表中指定位置的元素。 -
indexOf(Object o)
:返回首次出现的指定元素的索引;如果未找到,则返回-1。 -
lastIndexOf(Object o)
:返回最后一次出现的指定元素的索引;如果未找到,则返回-1。
java
import java.util.ArrayList;
import java.util.List;
public class ListGetExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Orange");
String fruit = list.get(1); // 获取索引1处的元素
System.out.println("Element at index 1: " + fruit);
int index = list.indexOf("Orange"); // 查找"Orange"的索引
System.out.println("Index of 'Orange': " + index);
int lastIndex = list.lastIndexOf("Banana"); // 查找最后一个"Banana"的索引
System.out.println("Last index of 'Banana': " + lastIndex);
}
}
修改元素
set(int index, E element)
:用指定元素替换列表中指定位置的元素,并返回被替换的元素。
java
import java.util.ArrayList;
import java.util.List;
public class ListSetExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Orange");
String oldFruit = list.set(1, "Grape"); // 修改索引1处的元素
System.out.println("Replaced element: " + oldFruit);
System.out.println("Updated list: " + list);
}
}
删除元素
-
remove(int index)
:删除指定位置的元素。 -
remove(Object o)
:删除首次出现的指定元素。
java
import java.util.ArrayList;
import java.util.List;
public class ListRemoveExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Orange");
list.remove(1); // 删除索引1处的元素
list.remove("Orange"); // 删除"Orange"
System.out.println("Updated list: " + list);
}
}
元素排序
从Java 8开始,List
接口提供了sort()
方法,可以直接对列表进行排序。
java
import java.util.ArrayList;
import java.util.List;
public class ListSortMethodExample {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(4);
list.add(2);
list.sort((o1, o2) -> o1.compareTo(o2)); // 升序排序
System.out.println("Sorted list: " + list);
}
}
1.3 List的不同实现类
实现类 | 特点 |
---|---|
ArrayList |
基于动态数组实现,支持快速随机访问,适合频繁读取操作,但插入和删除效率较低 |
LinkedList |
基于双向链表实现,适合频繁插入和删除操作,但随机访问效率较低 |
二、Map集合
2.1 Map集合介绍
Map
是Java集合框架中的一个接口,用于存储键值对(key-value)形式的数据。在Map
中,键(key)必须是唯一的,而值(value)可以重复。常见的Map
实现类有HashMap
、TreeMap
和HashTable
。
2.2 Map集合的常见方法
添加键值对
put(K key, V value)
:向Map
中添加键值对。
java
import java.util.HashMap;
import java.util.Map;
public class MapPutExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
System.out.println("Map: " + map);
}
}
获取值
get(Object key)
:根据键获取对应的值。
java
import java.util.HashMap;
import java.util.Map;
public class MapGetExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
Integer value = map.get("Apple"); // 获取键为"Apple"的值
System.out.println("Value for 'Apple': " + value);
}
}
检查键或值是否存在
-
containsKey(Object key)
:判断Map
中是否包含指定的键。 -
containsValue(Object value)
:判断Map
中是否包含指定的值。
java
import java.util.HashMap;
import java.util.Map;
public class MapContainsExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
boolean hasKey = map.containsKey("Apple"); // 检查键"Apple"
boolean hasValue = map.containsValue(2); // 检查值2
System.out.println("Contains key 'Apple': " + hasKey);
System.out.println("Contains value 2: " + hasValue);
}
}
删除键值对
remove(Object key)
:根据键删除对应的键值对。
java
import java.util.HashMap;
import java.util.Map;
public class MapRemoveExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
map.remove("Apple"); // 删除键为"Apple"的键值对
System.out.println("Updated map: " + map);
}
}
2.3 Map的不同实现类
实现类 | 特点 |
---|---|
HashMap |
基于哈希表实现,允许null 键和null 值,线程不安全,性能高 |
TreeMap |
基于红黑树实现,按键的自然顺序或自定义顺序排序,不允许null 键 |
LinkedHashMap |
维护插入顺序,性能与HashMap 接近,线程不安全 |
HashTable |
线程安全,不允许null 键或null 值,性能较低 |
三、Set集合
3.1 Set集合介绍
Set
是Java集合框架中的一个接口,它不允许存储重复元素。Set
中的元素通常没有固定的存储顺序,但某些实现类(如TreeSet
)可以保持有序。常见的Set
实现类有HashSet
、LinkedHashSet
和TreeSet
。
3.2 Set集合的常见方法
添加元素
add(E e)
:向集合中添加一个元素,如果元素已存在,则返回false
。
java
import java.util.HashSet;
import java.util.Set;
public class SetAddExample {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
boolean added1 = set.add("Apple"); // 添加元素
boolean added2 = set.add("Banana");
boolean added3 = set.add("Apple"); // 尝试添加重复元素
System.out.println("Added 'Apple': " + added1);
System.out.println("Added 'Banana': " + added2);
System.out.println("Added 'Apple' again: " + added3);
System.out.println("Set content: " + set);
}
}
检查元素是否存在
contains(Object o)
:检查集合中是否包含指定元素。
java
import java.util.HashSet;
import java.util.Set;
public class SetContainsExample {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
boolean containsApple = set.contains("Apple"); // 检查是否包含"Apple"
boolean containsOrange = set.contains("Orange"); // 检查是否包含"Orange"
System.out.println("Contains 'Apple': " + containsApple);
System.out.println("Contains 'Orange': " + containsOrange);
}
}
移除元素
remove(Object o)
:从集合中移除指定元素。
java
import java.util.HashSet;
import java.util.Set;
public class SetRemoveExample {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
boolean removed = set.remove("Apple"); // 移除"Apple"
System.out.println("Removed 'Apple': " + removed);
System.out.println("Set content after removal: " + set);
}
}
3.3 Set的不同实现类
实现类 | 特点 |
---|---|
HashSet |
基于哈希表实现,无序,允许null 值,线程不安全 |
LinkedHashSet |
维护插入顺序,性能与HashSet 接近,线程不安全 |
TreeSet |
基于红黑树实现,按键的自然顺序或自定义顺序排序,不允许null 值 |
总结

List
是一个有序的集合,允许重复元素,适合需要频繁访问元素的场景。
Map
是一个键值对集合,键唯一,值可以重复,适合需要通过键快速查找值的场景。
Set
是一个不允许重复元素的集合,适合需要存储唯一元素的场景。
通过掌握这些集合的特点和常见方法,我们可以根据具体需求选择合适的集合类型,从而更高效地处理数据。希望这篇文章对你有所帮助!