Java中的集合(Collection)是一个框架,用于存储、操作数据。集合框架包括了许多接口和类,用于表示数据的存储方式。集合主要分为两大类:Collection 和 Map,其中 Collection 又可以分为 List、Set 和 Queue 三种常见类型。
1. List :有序集合,允许重复元素
List
接口表示一个有序的元素集合,它允许重复的元素。常见实现类有 ArrayList
和 LinkedList
。
例子:使用 ArrayList
import java.util.ArrayList;
import java.util.List;
public class ListExample {
public static void main(String[] args) {
// 创建一个ArrayList
List<String> fruits = new ArrayList<>();
// 添加元素
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
fruits.add("Banana"); // List允许重复
// 输出集合
System.out.println(fruits); // [Apple, Banana, Orange, Banana]
// 获取元素
System.out.println("第一个水果: " + fruits.get(0)); // Apple
// 删除元素
fruits.remove("Banana");
System.out.println(fruits); // [Apple, Orange, Banana]
}
}
Collection
接口提供了一些通用的方法,用于操作集合的元素。常用的方法包括:
boolean add(E e)
:向集合中添加一个元素。boolean remove(Object o)
:从集合中删除指定的元素。boolean contains(Object o)
:检查集合中是否包含指定的元素。boolean isEmpty()
:检查集合是否为空。int size()
:返回集合中元素的数量。void clear()
:清空集合中的所有元素。Iterator<E> iterator()
:返回一个迭代器,用于遍历集合中的元素。
2. Set :无序集合,不允许重复元素
Set
接口表示一个不包含重复元素的集合。常见的实现类有 HashSet
和 TreeSet
。
例子:使用 HashSet
import java.util.HashSet;
import java.util.Set;
public class SetExample {
public static void main(String[] args) {
// 创建一个HashSet
Set<String> fruits = new HashSet<>();
// 添加元素
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
fruits.add("Banana"); // Set不允许重复
// 输出集合
System.out.println(fruits); // 输出顺序不定,可能是 [Apple, Orange, Banana]
}
}
- 特点:Set集合不保证元素的顺序,且不允许重复元素。
Set
接口提供了几个常用的方法来操作集合:
add(E e)
:将指定元素添加到集合中。如果集合中已经存在该元素,则不添加。remove(Object o)
:从集合中移除指定元素。contains(Object o)
:检查集合中是否包含指定元素。isEmpty()
:检查集合是否为空。size()
:返回集合中元素的个数。clear()
:移除集合中的所有元素。
3. Queue :队列,按照先进先出(FIFO)的顺序存储元素
Queue
接口表示一个队列,它按照先进先出的顺序处理元素。常见实现类有 LinkedList
和 PriorityQueue
。
例子:使用 LinkedList
作为队列
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
// 创建一个LinkedList,作为Queue使用
Queue<String> queue = new LinkedList<>();
// 添加元素
queue.add("Apple");
queue.add("Banana");
queue.add("Orange");
// 输出队列
System.out.println("队列元素: " + queue); // [Apple, Banana, Orange]
// 获取并删除队列的第一个元素
System.out.println("出队元素: " + queue.poll()); // Apple
// 当前队列
System.out.println("剩余队列: " + queue); // [Banana, Orange]
}
}
4. Map :键值对集合
Map
接口用于存储键值对。常见实现类有 HashMap
和 TreeMap
。
例子:使用 HashMap
import java.util.HashMap;
import java.util.Map;
public class MapExample {
public static void main(String[] args) {
// 创建一个HashMap
Map<String, Integer> fruitPrices = new HashMap<>();
// 添加键值对
fruitPrices.put("Apple", 5);
fruitPrices.put("Banana", 3);
fruitPrices.put("Orange", 4);
// 输出键值对
System.out.println(fruitPrices); // {Apple=5, Banana=3, Orange=4}
// 获取某个键对应的值
System.out.println("Apple的价格: " + fruitPrices.get("Apple")); // 5
// 删除一个键值对
fruitPrices.remove("Banana");
System.out.println(fruitPrices); // {Apple=5, Orange=4}
}
}
- 特点:Map 存储的是键值对(Key-Value),键是唯一的,而值可以重复。
Map 接口提供了几个常用的方法来操作集合:
put(K key, V value)
:将指定的键值对添加到Map
中。如果键已存在,则更新对应的值。get(Object key)
:根据指定的键获取对应的值。如果键不存在,返回null
。remove(Object key)
:删除指定键的键值对。containsKey(Object key)
:检查Map
中是否包含指定的键。containsValue(Object value)
:检查Map
中是否包含指定的值。keySet()
:返回Map
中所有键的集合。values()
:返回Map
中所有值的集合。entrySet()
:返回Map
中所有键值对的集合。
总结
- List: 有序集合,允许重复。
- Set: 无序集合,不允许重复。
- Queue: 队列,遵循先进先出(FIFO)顺序。
- Map: 存储键值对(Key-Value),键唯一。
这些集合接口和类都在 java.util
包中,广泛应用于存储和操作数据。你可以根据不同的需求选择不同的集合类型。