Files
home/docs/java/collection.md
2026-05-13 16:24:00 +08:00

3.0 KiB
Raw Blame History

集合框架

集合体系结构

Java集合框架主要分为两大类

  1. Collection接口:存储单值

    • List有序、可重复
    • Set无序、不可重复
    • Queue队列
  2. Map接口:存储键值对

List集合

ArrayList

基于动态数组实现,查询快,增删慢。

import java.util.ArrayList;
import java.util.List;

List<String> list = new ArrayList<>();

// 添加元素
list.add("Java");
list.add("Python");
list.add("JavaScript");

// 获取元素
System.out.println(list.get(0));  // Java

// 遍历
for (String item : list) {
    System.out.println(item);
}

// 删除元素
list.remove("Python");

// 集合大小
System.out.println(list.size());  // 2

LinkedList

基于链表实现,增删快,查询慢。

import java.util.LinkedList;

LinkedList<String> linkedList = new LinkedList<>();

linkedList.addFirst("第一");
linkedList.addLast("最后");
linkedList.add("中间");

System.out.println(linkedList.getFirst());  // 第一
System.out.println(linkedList.getLast());   // 最后

Set集合

HashSet

基于哈希表实现,无序、不可重复。

import java.util.HashSet;
import java.util.Set;

Set<String> set = new HashSet<>();

set.add("Apple");
set.add("Banana");
set.add("Apple");  // 重复元素不会被添加

System.out.println(set.size());  // 2
System.out.println(set.contains("Apple"));  // true

TreeSet

基于红黑树实现,自动排序。

import java.util.TreeSet;

Set<Integer> treeSet = new TreeSet<>();

treeSet.add(5);
treeSet.add(1);
treeSet.add(3);

// 输出1, 3, 5自动排序
for (Integer num : treeSet) {
    System.out.println(num);
}

Map集合

HashMap

基于哈希表实现,键不可重复。

import java.util.HashMap;
import java.util.Map;

Map<String, Integer> map = new HashMap<>();

// 添加键值对
map.put("Java", 1);
map.put("Python", 2);
map.put("JavaScript", 3);

// 获取值
System.out.println(map.get("Java"));  // 1

// 遍历
for (Map.Entry<String, Integer> entry : map.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}

// 判断键是否存在
System.out.println(map.containsKey("Java"));  // true

// 删除
map.remove("Python");

TreeMap

基于红黑树实现,键自动排序。

import java.util.TreeMap;

Map<Integer, String> treeMap = new TreeMap<>();

treeMap.put(3, "C");
treeMap.put(1, "A");
treeMap.put(2, "B");

// 按键排序输出1=A, 2=B, 3=C
treeMap.forEach((k, v) -> System.out.println(k + "=" + v));

集合工具类

import java.util.Collections;
import java.util.ArrayList;
import java.util.List;

List<Integer> numbers = new ArrayList<>();
numbers.add(3);
numbers.add(1);
numbers.add(2);

// 排序
Collections.sort(numbers);  // [1, 2, 3]

// 反转
Collections.reverse(numbers);  // [3, 2, 1]

// 打乱
Collections.shuffle(numbers);

// 最大最小值
System.out.println(Collections.max(numbers));
System.out.println(Collections.min(numbers));