Collection
接口Collection
是集合框架的根接口,定义了集合的基本操作,如添加、删除、查询元素等。它有两个主要的子接口:List
和 Set
。
java
import java.util.ArrayList;
import java.util.Collection;
public class CollectionExample {
public static void main(String[] args) {
Collection collection = new ArrayList<>();
collection.add("element1");
collection.add("element2");
System.out.println("Collection size: " + collection.size());
System.out.println("Collection contains 'element1': " + collection.contains("element1"));
collection.remove("element1");
System.out.println("Collection size after removal: " + collection.size());
}
}
上述代码创建了一个 ArrayList
实例,并将其赋值给 Collection
类型的引用变量,展示了 Collection
接口的基本操作。
List
接口List
是一个有序的集合,允许重复元素。它提供了基于索引的访问方式,常见的实现类有:
ArrayList
java
import java.util.ArrayList;
import java.util.List;
public class ArrayListExample {
public static void main(String[] args) {
List list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add(1, "cherry"); // 在指定位置插入元素
System.out.println("Element at index 1: " + list.get(1));
list.remove(2); // 删除指定位置的元素
for (String fruit : list) {
System.out.println(fruit);
}
}
}
LinkedList
java
import java.util.LinkedList;
import java.util.List;
public class LinkedListExample {
public static void main(String[] args) {
List list = new LinkedList<>();
list.add("apple");
list.add("banana");
((LinkedList) list).addFirst("cherry"); // 在链表头部添加元素
((LinkedList) list).addLast("date"); // 在链表尾部添加元素
System.out.println("First element: " + ((LinkedList) list).getFirst());
System.out.println("Last element: " + ((LinkedList) list).getLast());
((LinkedList) list).removeFirst(); // 删除链表头部元素
((LinkedList) list).removeLast(); // 删除链表尾部元素
for (String fruit : list) {
System.out.println(fruit);
}
}
}
Vector
ArrayList
类似,也是基于动态数组实现,但它是线程安全的,不过性能相对较低。java
import java.util.List;
import java.util.Vector;
public class VectorExample {
public static void main(String[] args) {
List list = new Vector<>();
list.add("apple");
list.add("banana");
System.out.println("Vector size: " + list.size());
for (String fruit : list) {
System.out.println(fruit);
}
}
}
Set
接口Set
是一个不允许重复元素的集合,常见的实现类有:
HashSet
java
import java.util.HashSet;
import java.util.Set;
public class HashSetExample {
public static void main(String[] args) {
Set set = new HashSet<>();
set.add("apple");
set.add("banana");
set.add("apple"); // 重复元素,不会被添加
System.out.println("Set size: " + set.size());
for (String fruit : set) {
System.out.println(fruit);
}
}
}
TreeSet
java
import java.util.Set;
import java.util.TreeSet;
public class TreeSetExample {
public static void main(String[] args) {
Set set = new TreeSet<>();
set.add("banana");
set.add("apple");
set.add("cherry");
for (String fruit : set) {
System.out.println(fruit); // 按字母顺序输出
}
}
}
LinkedHashSet
java
import java.util.LinkedHashSet;
import java.util.Set;
public class LinkedHashSetExample {
public static void main(String[] args) {
Set set = new LinkedHashSet<>();
set.add("banana");
set.add("apple");
set.add("cherry");
for (String fruit : set) {
System.out.println(fruit); // 按插入顺序输出
}
}
}
Queue
接口Queue
用于在处理前保存元素,通常遵循先进先出(FIFO)原则,常见的实现类有:
LinkedList
LinkedList
不仅实现了 List
接口,还实现了 Queue
接口,可作为队列使用。
java
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
Queue queue = new LinkedList<>();
queue.offer("apple");
queue.offer("banana");
System.out.println("Head of the queue: " + queue.peek());
System.out.println("Removed element: " + queue.poll());
System.out.println("Queue size after removal: " + queue.size());
}
}
PriorityQueue
java
import java.util.PriorityQueue;
import java.util.Queue;
public class PriorityQueueExample {
public static void main(String[] args) {
Queue queue = new PriorityQueue<>();
queue.offer(3);
queue.offer(1);
queue.offer(2);
while (!queue.isEmpty()) {
System.out.println(queue.poll()); // 按升序输出
}
}
}
Map
接口Map
是一种键值对的映射集合,键不能重复,常见的实现类有:
HashMap
java
import java.util.HashMap;
import java.util.Map;
public class HashMapExample {
public static void main(String[] args) {
Map map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
System.out.println("Value of 'apple': " + map.get("apple"));
map.remove("banana");
for (Map.Entry entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
TreeMap
java
import java.util.Map;
import java.util.TreeMap;
public class TreeMapExample {
public static void main(String[] args) {
Map map = new TreeMap<>();
map.put("banana", 2);
map.put("apple", 1);
map.put("cherry", 3);
for (Map.Entry entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue()); // 按键的字母顺序输出
}
}
}
LinkedHashMap