## 一、单列集合 在 Java 中,单列集合(Collection) 是指存储单个元素的集合,它们都实现了 java.util.Collection 接口。 #### 1、类型 | **接口** | **特点** | **主要实现类** | | -------- | ---------------- | ------------------------------------- | | `List` | 有序、可重复 | `ArrayList`, `LinkedList`, `Vector` | | `Set` | 无序、不可重复 | `HashSet`, `LinkedHashSet`, `TreeSet` | | `Queue` | 先进先出或优先级 | `LinkedList`, `PriorityQueue` | #### 2、ArrayList ##### ①集合中不允许存放基本数据类型,只能存放引用数据类型; ##### ②ArrayList创建 ```java // 字符串类型 ArrayList listString = new ArrayList<>(); // 整数类型 ArrayList listInteger = new ArrayList<>(); // 双精浮点类型 ArrayList listDouble = new ArrayList<>(); // 布尔型 ArrayList listBoolean = new ArrayList<>(); ``` ##### ③存放数据 add():向后追加数据 ```java listString.add("a"); // 直接加数据 listString.add(1, "A");// 根据index数据 ``` ##### ④删除数据 remove() ```java listString.remove(0);// 删除index数据 listString.remove("b");// 删除object数据 listInteger.removeFirst(); listDouble.removeLast(); ``` ##### ⑤清空数据 clear() ```java listBoolean.clear(); ``` ##### ⑥获取数据 get() ```java listString.get(0); listDouble.getFirst(); listDouble.getLast(); ``` ##### ⑦修改数据 set() ```java listDouble.set(0, 6.6); ``` ##### ⑧查找元素 indexOf() ```java listDouble.indexOf(6.6); listDouble.lastIndexOf(6.6); // 倒叙查找 ``` ##### ⑨判断是否为空 isEmpty() ```java listBoolean.isEmpty(); ``` ##### ⑩获取集合大小 size() ```java listDouble.size(); ``` ##### ⑪遍历集合 ```java // 通过for循环遍历 for (int i = 0; i < listDouble.size(); i++) { System.out.printf("Index:%d - %f\n", i, listDouble.get(i)); } for (Double aDouble : listDouble) { System.out.println(aDouble); } // 迭代器 Iterator iter = listDouble.iterator(); while (iter.hasNext()) { System.out.println(iter.next()); } ``` ##### ⑫数组转换 ```java Object[] DoubleArray; DoubleArray = listDouble.toArray(); ``` #### 3、HashSet ##### ①HashSet创建 ```java HashSet set = new HashSet<>(); ``` ##### ②新增数据 add() ```java set.add("C"); set.add("B"); set.add("A");// 因为是无序的,输出为A,B,C ``` ##### ③删除数据 remove() ```java set.remove("B"); ``` ##### ④查询数据是否存在 contains() ```java set.contains("A");// 返回boolean ``` ##### ⑤是否为空 isEmpty() ```java set.isEmpty(); ``` ##### ⑥遍历 ```java for (String s : set) { System.out.println(s); } Iterator iter = set.iterator(); while (iter.hasNext()) { System.out.println(iter.next()); } Object[] strs = set.toArray(); for (Object o : strs){ System.out.println(o); } ``` ## 二、双列集合 #### 1、类型 | **实现类** | **特点** | **线程安全** | **允许 `null` 键/值** | **顺序** | | ------------------- | -------------------- | ------------ | --------------------- | -------- | | `HashMap` | 哈希表,查询快 | ❌ | ✅ / ✅ | 无序 | | `LinkedHashMap` | 维护插入/访问顺序 | ❌ | ✅ / ✅ | 有序 | | `TreeMap` | 红黑树,按键排序 | ❌ | ❌ / ✅ | 排序 | | `Hashtable` | 早期线程安全,性能差 | ✅ | ❌ / ❌ | 无序 | | `ConcurrentHashMap` | 高并发优化 | ✅ | ❌ / ❌ | 无序 | | `WeakHashMap` | 弱引用键,自动清理 | ❌ | ✅ / ✅ | 无序 | | `IdentityHashMap` | 用`==` 比较键 | ❌ | ✅ / ✅ | 无序 | #### 2、HashMap ##### ①创建 ```java HashMap map = new HashMap<>(); ``` ##### ②新增/修改 put() ```java // 新增 map.put(0, "张三"); map.put(1, "张三"); map.put(2, "王五"); // 修改 map.put(1, "李四"); ``` ##### ③删除 remove() ```java map.remove(0); ``` ##### ④获取键值 ```java map.get(2);// 根据key取值 map.values();// 获取map中所有的值(value) ``` ##### ⑤获取所有的键(key) ```java map1.keySet() ``` ##### ⑥遍历 ```java // 利用Entry接口 实现遍历出HashMap中所有的key以及对应value import java.util.Map; for (Map.Entry entry : map1.entrySet()) { System.out.println("key:" + entry.getKey() + " - value:" + entry.getValue()); } // 利用forEach()遍历HashMap中所有的key以及对应value map.forEach((key, value) -> System.out.println("key:" + key + " - value:" + value)); ``` ## 笔记、代码附件 [香肠狗网盘][1]https://pan.soki.me/s/2wCR [1]: https://pan.soki.me/s/2wCR Loading... ## 一、单列集合 在 Java 中,单列集合(Collection) 是指存储单个元素的集合,它们都实现了 java.util.Collection 接口。 #### 1、类型 | **接口** | **特点** | **主要实现类** | | -------- | ---------------- | ------------------------------------- | | `List` | 有序、可重复 | `ArrayList`, `LinkedList`, `Vector` | | `Set` | 无序、不可重复 | `HashSet`, `LinkedHashSet`, `TreeSet` | | `Queue` | 先进先出或优先级 | `LinkedList`, `PriorityQueue` | #### 2、ArrayList ##### ①集合中不允许存放基本数据类型,只能存放引用数据类型; ##### ②ArrayList创建 ```java // 字符串类型 ArrayList<String> listString = new ArrayList<>(); // 整数类型 ArrayList<Integer> listInteger = new ArrayList<>(); // 双精浮点类型 ArrayList<Double> listDouble = new ArrayList<>(); // 布尔型 ArrayList<Boolean> listBoolean = new ArrayList<>(); ``` ##### ③存放数据 add():向后追加数据 ```java listString.add("a"); // 直接加数据 listString.add(1, "A");// 根据index数据 ``` ##### ④删除数据 remove() ```java listString.remove(0);// 删除index数据 listString.remove("b");// 删除object数据 listInteger.removeFirst(); listDouble.removeLast(); ``` ##### ⑤清空数据 clear() ```java listBoolean.clear(); ``` ##### ⑥获取数据 get() ```java listString.get(0); listDouble.getFirst(); listDouble.getLast(); ``` ##### ⑦修改数据 set() ```java listDouble.set(0, 6.6); ``` ##### ⑧查找元素 indexOf() ```java listDouble.indexOf(6.6); listDouble.lastIndexOf(6.6); // 倒叙查找 ``` ##### ⑨判断是否为空 isEmpty() ```java listBoolean.isEmpty(); ``` ##### ⑩获取集合大小 size() ```java listDouble.size(); ``` ##### ⑪遍历集合 ```java // 通过for循环遍历 for (int i = 0; i < listDouble.size(); i++) { System.out.printf("Index:%d - %f\n", i, listDouble.get(i)); } for (Double aDouble : listDouble) { System.out.println(aDouble); } // 迭代器 Iterator<Double> iter = listDouble.iterator(); while (iter.hasNext()) { System.out.println(iter.next()); } ``` ##### ⑫数组转换 ```java Object[] DoubleArray; DoubleArray = listDouble.toArray(); ``` #### 3、HashSet ##### ①HashSet创建 ```java HashSet<String> set = new HashSet<>(); ``` ##### ②新增数据 add() ```java set.add("C"); set.add("B"); set.add("A");// 因为是无序的,输出为A,B,C ``` ##### ③删除数据 remove() ```java set.remove("B"); ``` ##### ④查询数据是否存在 contains() ```java set.contains("A");// 返回boolean ``` ##### ⑤是否为空 isEmpty() ```java set.isEmpty(); ``` ##### ⑥遍历 ```java for (String s : set) { System.out.println(s); } Iterator<String> iter = set.iterator(); while (iter.hasNext()) { System.out.println(iter.next()); } Object[] strs = set.toArray(); for (Object o : strs){ System.out.println(o); } ``` ## 二、双列集合 #### 1、类型 | **实现类** | **特点** | **线程安全** | **允许 `null` 键/值** | **顺序** | | ------------------- | -------------------- | ------------ | --------------------- | -------- | | `HashMap` | 哈希表,查询快 | ❌ | ✅ / ✅ | 无序 | | `LinkedHashMap` | 维护插入/访问顺序 | ❌ | ✅ / ✅ | 有序 | | `TreeMap` | 红黑树,按键排序 | ❌ | ❌ / ✅ | 排序 | | `Hashtable` | 早期线程安全,性能差 | ✅ | ❌ / ❌ | 无序 | | `ConcurrentHashMap` | 高并发优化 | ✅ | ❌ / ❌ | 无序 | | `WeakHashMap` | 弱引用键,自动清理 | ❌ | ✅ / ✅ | 无序 | | `IdentityHashMap` | 用`==` 比较键 | ❌ | ✅ / ✅ | 无序 | #### 2、HashMap ##### ①创建 ```java HashMap<Integer, String> map = new HashMap<>(); ``` ##### ②新增/修改 put() ```java // 新增 map.put(0, "张三"); map.put(1, "张三"); map.put(2, "王五"); // 修改 map.put(1, "李四"); ``` ##### ③删除 remove() ```java map.remove(0); ``` ##### ④获取键值 ```java map.get(2);// 根据key取值 map.values();// 获取map中所有的值(value) ``` ##### ⑤获取所有的键(key) ```java map1.keySet() ``` ##### ⑥遍历 ```java // 利用Entry接口 实现遍历出HashMap中所有的key以及对应value import java.util.Map; for (Map.Entry<String, String> entry : map1.entrySet()) { System.out.println("key:" + entry.getKey() + " - value:" + entry.getValue()); } // 利用forEach()遍历HashMap中所有的key以及对应value map.forEach((key, value) -> System.out.println("key:" + key + " - value:" + value)); ``` ## 笔记、代码附件 [香肠狗网盘][1]https://pan.soki.me/s/2wCR [1]: https://pan.soki.me/s/2wCR 最后修改:2025 年 10 月 13 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 👆请简单粗暴地爱我。