前言

Java 容器(集合)是开发中最常用工具,也是笔试、面试必考点。很多同学刚学时容易把 ArrayList、HashMap、HashSet 搞混,这篇文章用最简单的结构帮你一次性梳理明白。

一、Java 容器整体框架

Java 容器分为两大顶层接口,所有集合都从这里扩展:

1. Collection:存储单个对象

2. Map:存储键值对(key-value)

记住这个大框架,就不会乱。

二、Collection 三大分支

1. List:有序、可重复、有索引

- ArrayList

底层数组,查询快,增删慢,线程不安全

- LinkedList

底层链表,增删快,查询慢

- Vector

线程安全,但效率低,基本不用

使用场景:需要有序、可重复、按下标查找时用 List。

2. Set:无序、不可重复(自动去重)

- HashSet:去重、速度最快、无序

- LinkedHashSet:保持插入顺序

- TreeSet:可自动排序

使用场景:需要去重、不关心顺序时用 Set。

3. Queue:队列(先进先出 FIFO)

- LinkedList

- PriorityQueue 优先级队列

三、Map 体系:key 唯一的键值对

Map 存储 key-value 结构,key 不能重复。

- HashMap:最常用,线程不安全,效率高,允许 null

- LinkedHashMap:保留插入顺序

- TreeMap:key 可排序

- Hashtable:线程安全,效率低,不推荐

- ConcurrentHashMap:高并发安全,工作常用

四、高频考点:几组核心区别

1. ArrayList vs LinkedList

查询多 → ArrayList

增删多 → LinkedList

2. HashMap vs Hashtable

HashMap:线程不安全,允许 null

Hashtable:线程安全,不允许 null

3. HashSet vs TreeSet

HashSet:快、无序

TreeSet:可排序

五、代码示例(直接复制运行)

1. List 示例

java

import java.util.ArrayList;

import java.util.List;

public class ListDemo {

    public static void main(String[] args) {

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

        list.add("Java");

        list.add("容器");

        list.add("List");

        list.add("Java"); // 可重复

        System.out.println(list);

        System.out.println("下标1: " + list.get(1));

    }

}

2. Set 示例

java

import java.util.HashSet;

import java.util.Set;

public class SetDemo {

    public static void main(String[] args) {

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

        set.add("Java");

        set.add("容器");

        set.add("Set");

        set.add("Java"); // 自动去重

        System.out.println(set);

    }

}

3. Map 示例

java

import java.util.HashMap;

import java.util.Map;

public class MapDemo {

    public static void main(String[] args) {

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

        map.put("name", "Java容器");

        map.put("type", "Map");

        System.out.println(map.get("name"));

        System.out.println(map);

    }

}

六、一句话使用指南

- 需要有序可重复、按索引查找 → List

- 需要自动去重 → Set

- 需要键值对、快速查找 → Map

更多推荐