Java小知识(三)、Collection 和 Collections的区别

205 阅读2分钟

Collection

Collection是一个接口类,也是最基本的集合接口,一个Collection代表一组Object,即集合的元素。

image.png

上图是整个集合架构图,可以看出,Collection接口存在三种子类型接口:List、Set、Queue;

接着是一些抽象类,最后是实现类,如常见的:ArrayList、LinkedList、HashMap、HashSet、LinkedHashSet、LinkedHashMap等等。

集合框架

操作集合的统一架构,包含内容如下:

1、接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象

2、实现: 是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。

3、算法: 是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。

除了集合,该框架也定义了几个 Map 接口和类。Map 里存储的是键/值对。尽管 Map 不是集合,但是它们完全整合在集合中。

Collections

Collections是一个工具类,包含了很多关于集合操作相关的方法,专门用于操作集合的工具类。

常见方法

下面列举一下Collections中常见的方法

  1. Sort(List list):按自然排序的升序排序

  2. Sort(List list,Comparator c):自定义排序规则,Comparator控制排序逻辑

  3. shuffle(List list):随机排序

  4. max(Collection coll):获取最大值元素

  5. max(Collection coll, Comparator c):自定义规则获取最大值元素,Comparator控制排序逻辑

  6. reverse(List list):反转集合

  7. swap(List list, int i , int j):交换两个索引位置元素

  8. binarySearch(List list, Object key):对集合继续二分查找,返回索引,集合必须为有序

  9. fill(List list, Object obj):用元素obj填充list中所有元素

  10. frequency(Collection c, Object o):统计元素出现次数

  11. indexOfSubList(List list, List target):统计targe在list中第一次出现的索引,找不到则返回-1

  12. replaceAll(List list, Object oldVal, Object newVal):用新元素替换旧元素

只是简单列举了常见的几个,还有很多方法没列出来,感兴趣的可以看一下源码。