java.util包之java.util.Collection介绍

java.util.Collection 接口介绍

java.util.Collection 是 Java 集合框架(Java Collections Framework, JCF)的根接口 ,定义了所有集合类(如 ListSetQueue)的基本操作。它代表一组对象(元素),并提供了一系列方法来操作这些元素。


1. Collection 的主要特点

  • 存储一组对象 (可以是任意类型,但通常使用泛型 <E> 指定元素类型)。
  • 不直接实现 ,而是由子接口(如 ListSetQueue)和具体类(如 ArrayListHashSetLinkedList)实现。
  • 允许重复元素 (但 Set 子接口不允许)。
  • 可以包含 null 元素 (但某些实现类如 TreeSet 不允许)。
  • 不保证顺序List 有序,Set 无序,Queue 按特定规则排序)。

2. Collection 的子接口

子接口 特点 主要实现类
List 有序、可重复 ArrayList, LinkedList, Vector
Set 无序、不可重复 HashSet, LinkedHashSet, TreeSet
Queue 队列(FIFO)或优先队列 LinkedList, PriorityQueue, ArrayDeque
DequeQueue 的子接口) 双端队列 ArrayDeque, LinkedList

3. Collection 的常用方法

(1) 基本操作

方法 说明
boolean add(E e) 添加元素(成功返回 true,失败返回 false
boolean remove(Object o) 删除元素(成功返回 true,否则 false
boolean contains(Object o) 检查是否包含某个元素
int size() 返回元素个数
boolean isEmpty() 判断集合是否为空
void clear() 清空集合

(2) 批量操作

方法 说明
boolean addAll(Collection<? extends E> c) 添加另一个集合的所有元素(并集)
boolean removeAll(Collection<?> c) 删除另一个集合的所有元素(差集)
boolean retainAll(Collection<?> c) 仅保留另一个集合中也存在的元素(交集)
boolean containsAll(Collection<?> c) 检查是否包含另一个集合的所有元素

(3) 遍历操作

方法 说明
Iterator<E> iterator() 返回迭代器,用于遍历集合
Object[] toArray() 将集合转为数组
<T> T[] toArray(T[] a) 将集合转为指定类型的数组

4. Collection 的使用示例

(1) 基本操作示例

java 复制代码
Collection<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");

System.out.println(names.contains("Bob"));  // true
System.out.println(names.size());          // 3
names.remove("Alice");
System.out.println(names);                 // [Bob, Charlie]

(2) 遍历集合

java 复制代码
// 方式1:for-each 循环
for (String name : names) {
    System.out.println(name);
}

// 方式2:迭代器 Iterator
Iterator<String> it = names.iterator();
while (it.hasNext()) {
    System.out.println(it.next());
}

// 方式3:Java 8+ Stream API
names.stream().forEach(System.out::println);

(3) 集合运算(并集、交集、差集)

java 复制代码
Collection<String> set1 = new HashSet<>(Arrays.asList("A", "B", "C"));
Collection<String> set2 = new HashSet<>(Arrays.asList("B", "C", "D"));

set1.addAll(set2);      // 并集: A, B, C, D
set1.retainAll(set2);   // 交集: B, C
set1.removeAll(set2);   // 差集: A

5. 注意事项

  1. Collection 不是线程安全的 ,多线程环境下应使用:
    • Collections.synchronizedCollection() 包装
    • CopyOnWriteArrayList(适用于读多写少的场景)
    • ConcurrentHashMapkeySet()ConcurrentLinkedQueue
  2. Collection 不能存储基本类型 (如 intdouble),必须使用包装类(如 IntegerDouble)。
  3. Arrays.asList() 返回的是固定大小的 List ,不能 add()remove()

6. 总结

  • Collection 是 Java 集合框架的根接口,定义了基本的集合操作。
  • 主要子接口List(有序可重复)、Set(无序不重复)、Queue(队列)。
  • 常用实现类ArrayListHashSetLinkedListPriorityQueue
  • 核心方法add()remove()contains()size()iterator()
  • 集合运算addAll()(并集)、retainAll()(交集)、removeAll()(差集)。
相关推荐
mqiqe1 小时前
AgentScope Java 2.0 协议集成全景解析:A2A、AG-UI、Agent Protocol 三大开放协议实战指南
java·开发语言·ui
脉动数据行情1 小时前
Java 实现台股 TWSE/TPEx 行情采集(个股 + K 线)
java·开发语言·twse·tpex·台股
小杨不想秃头2 小时前
信息安全工程师教程第二章密码学
运维·服务器·密码学
I'mChloe2 小时前
WGCLOUD怎么监控多台服务器?从Server、Agent 部署到监控面板实战
运维·服务器
Android系统攻城狮3 小时前
Linux PipeWire深度解析之pw_init调用流程与实战(八十三)
linux·运维·服务器·音频进阶·pipewire音频进阶
月华路3 小时前
G1 GC 对数组与大对象(Humongous)的处理
java·jvm·算法
liangshanbo12153 小时前
虚拟列表深度面试题整理
java·开发语言·前端
gugucoding4 小时前
59. 【Java】Spring Boot 入门:第一个 Web 应用
java·开发语言·spring boot
zbyyd4 小时前
Linux 进程管理详解:从概念到实战
linux·运维·服务器
10mAh5 小时前
【Java】HashMap 的 put 到底做了什么?——冲突、扩容与树化实测
java·开发语言·hash