Collections 从名字就可以看出来,是对集合的操作,它提供了一系列内部类集合,主要为以下类型:

  • 不可变集合
  • 同步的集合
  • 有类型检查的集合
  • 空集合
  • 只含一个元素的集合

还提供了一系列很有用的静态方法,主要包括以下功能:

  • 排序
  • 二分查找
  • 反转
  • 打乱
  • 交换元素位置
  • 复制
  • 求出集合中最小/大值

1. 集合

1.1 不可变集合

有时候我们拿到一部分数据,这个数据不允许修改、删除,只允许读取,我们可以使用Collections.unmodifiableXXX()方法来实现。
Collections提供了对以下集合的不可变支持:
image.png
首先是用一个静态方法解决其他容器向不可变容器的转换。

  1. public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c) {
  2. return new UnmodifiableCollection<>(c);
  3. }

UnmodifiableCollection作为其他不可变容器的父类方法,在面对增删改(包括迭代器的remove也不支持)操作时会返回一个UnsupportedOperationException
在内部实现上就是用一个final类型的容器去接受传入的参数并返回。

1.2 同步集合

image.png
上述结合由synchronize关键字实现