Java 常用集合

线性结构

ArrayList

  • 特性
    • 动态数组实现
  • 常用方法
    List<Integer> list = new ArrayList<>(100);  // 预分配容量
    list.add(e);  // 增加元素
    list.get(index); // 根据下标获取元素
    list.set(index, e); // 指定的下标 index 处设置一个新的元素 e,并返回原来在该位置的元素。
    list.remove(index); // 删除下标元素
    list.size() // 获取大小

LinkedList

  • 特性
    • 双向链表实现
  • 常用方法
  LinkedList<Integer> list = new LinkedList<>();
  list.addFirst(e); // 队首插入
  list.addLast(e); // 队尾插入
  list.pollFirst(); // 弹出队首
  list.pollLast(); // 弹出队尾
  list.pollLast(); // 查看队尾
  list.isEmpty(); // 判断非空

队列与双端队列

ArrayDeque

  • 特性
    • 循环数组实现
  • 常用方法
    Deque<Integer> deque = new ArrayDeque<>();
    deque.offerFirst(e); // 队首插入
    deque.offerLast(e); // 队尾插入
    deque.pollFirst(); // 弹出队首
    deque.pollLast(); // 弹出队尾
    deque.peekLast(); // 查看队尾
    deque.peekFirst(); // 查看队首
    deque.size(); // 大小
    deque.isEmpty() //检查队列是否为空
    deque.contains(Object o) //检查队列是否包含某个元素
    deque.remove(Object o) //删除第一个匹配的元素(从队首到队尾遍历)
    // 当普通队列时可以直接用 
    add(); // 加入
    peek();// 查看
    poll(); // 查看并弹出

PriorityQueue

  • 特性
    • 堆实现(默认最小堆)
  • 常用方法
    Queue<Integer> pq = new PriorityQueue<>((a,b) -> b - a); // 最大堆
    pq.offer(e); 
    pq.peek(); 
    pq.poll();

Set类

HashSet

  • 特性
    • 哈希表实现,无序,不重复,无索引
  • 常用方法
    Set<Integer> set = new HashSet<>();
    set.add(e); 
    set.contains(e); 
    set.remove(e);

    TreeSet

  • 特性
    • 红黑树实现,排序,不重复,无索引
  • 高级方法
    TreeSet<Integer> set = new TreeSet<>();
    set.ceiling(e);  // 最小 >= e 的元素
    set.floor(e);    // 最大 <= e 的元素
    set.higher(e);   // 最小 > e 的元素

映射表

HashMap

  • 特性
    • 哈希表实现,插入/查找 O(1)
    • 允许 null 键/值
  • 常用方法
    
    Map<String, Integer> map = new HashMap<>();
    map.put(key, val); // 重复 key 则覆盖
    map.get(key);
    map.containsKey(key);
    map.containsValue(Object value);
    map.getOrDefault(key, 0);
    map.putIfAbsent(K key, V value);// 键不存在则插入
    map.remove(Object key)
    keySet()
    values()
    entrySet()
    isEmpty()

#### **TreeMap**
- **特性**  
  - 红黑树实现,按键自然顺序排序

- **高级方法**  
```java
  TreeMap<Integer, String> map = new TreeMap<>();
  map.firstKey(); map.lastKey();
  map.lowerEntry(k);  // 最大键 < k
  map.tailMap(k);     // 所有键 >= k

工具类

Arrays

  • 核心方法
    int[] arr = new int[10];
    Arrays.sort(arr);  // 快速排序
    Arrays.fill(arr, 0);  // 填充值
    Arrays.binarySearch(arr, key); // 二分查找(必须有序!)

Collections

  • 常用操作
    Collections.reverse(list);     // 反转列表
    Collections.rotate(list, 2);  // 循环右移2位
    Collections.max(list);        // 找最大值
    Collections.shuffle(list); // 打乱顺序

StringBuilder

  • 特性
    高频字符串拼接时使用(替代 String)

    StringBuilder sb = new StringBuilder();
    sb.append("Hello").append(123);
    String result = sb.toString();
    sb.reverse(); // 翻转

String

s.length() // 获取长度
s.charAt(index) // 获取 index 坐标下字符
s.indexOf("el"); // 返回子字符串第一次出现的索引
s.lastIndexOf("l"); // 返回子字符串最后一次出现的索引
s.contains("ell"); // 检查字符串是否包含指定字符序列
s.equals("Hello"); // 判断是否相等
s.equalsIgnoreCase("hello"); // 忽略大小写比较
s.compareTo("Hallo"); // 按字典序比较
s.substring(1, 4); // 截取[1, 4) 子字符串
String.join("-", "Java", "is", "fun"); // joined = "Java-is-fun" 用制度字符进行分割
s.concat(" World"); // 拼接到末尾
s.replace('l', 'L'); // 字符替换,后面替换前面
replaceAll(String regex, String replacement); // 字符串替换
"Java-is-fun".split("-"); // parts = ["Java", "is", "fun"] 字符串分割
s.toLowerCase(); // 转小写
s.toUpperCase(); // 转大写
"  Hello  ".trim(); // trimmed = "Hello" 去除空白
String.format("Name: %s, Age: %d", "Alice", 25); // formatted = "Name: Alice, Age: 25" 格式化
s.isEmpty(); // 判断是否为空
上一篇