Collection和Colletions区别

1、java.util.Collection

1.1是一个集合接口(集合类的一个顶级接口)。故不能直接实例化使用;只能通过它的子类来完成,它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。其直接继承接口有List与Set。

1.2集合是用来存储数据的,它是基于某种数据结构数据容器。常见的数据结构:数组(Array)、集(Set)、队列(Queue)、链表(Linkedlist)、树(Tree)、堆(Heap)、栈(Stack)和映射(Map)等结构。集合大类分为了Collection和Map

1.3Collection是描述所有序列容器的共性的根接口,可能会被认为是一个附属接口,Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,即因为要表示其他若干个接口的共性而出现的接口。同时为什么要将其作为接口?是因为可以使我们能够创建更通用的代码。通过针对接口而非具体实现来编写代码,这样,才可以更好地应用于更多的对象类型。

1.4常用共性方法:

1)boolean add(E)

往集合里面添加元素或者对象的方法

2)void clear()

移除容器中的所有元素,该集合不支持移除的话就会抛出

3)boolean contains(Object o)

用来检查此集合是否包含指定元素或者对象,包含则返回true不包含就返回false;会返回两种错误。

4)boolean isEmpty()

用来检查集合中是否为空,如果为空就返回true。

5)Iterator iterator()

返回一个Iterator迭代器,这个方法是用来遍历集合中的元素的,在一些需要获取集合中的元素(包括打印输出,调用等场景下),依赖于集合而存在的,有next方法和hasNext方法。

6)int size()

用来返回的集合的长度,也就是集合里面的元素的个数。

7)Boolean remove()

用来删除集合中的元素,对象,只要有移除动作就会返回true。


2、java.util.Collections

2.1 是一个包装类(工具类/帮助类)。它包含有各种有关集合操作的静态多态方法。并且该工具类构造方法被private修饰了,因此该类不能实例化,

2.2就像Math,Arrays类一样,集成了很多特定的功能,用于对集合中元素进行排序、搜索以及线程安全等各种操作,服务于Java的Collection框架。

2.3常用方法:

1) 排序(Sort)

使用sort方法可以根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。


其中Collections.sort(List list, Comparator? super T c)方法主要细分三个步骤:

*将list转换成一个对象数组

*将这个对象数组传递给Arrays类的sort方法(也就是说collections的sort其实本质是调用了Arrays.sort)。

*完成排序之后,再一个一个地,把Arrays的元素复制到List中。


2) 反转(Reverse)

使用Reverse方法可以根据元素的自然顺序 对指定列表按降序进行排序。


3) 混排(Shuffling)

混排算法所做的正好与 sort 相反: 它打乱在一个 List 中可能有的任何排列的踪迹。也就是说,基于随机源的输入重排该 List, 这样的排列具有相同的可能性(假设随机源是公正的)。这个算法在实现一个碰运气的游戏中是非常有用的。例如,它可被用来混排代表一副牌的 Card 对象的一个List 。另外,在生成测试案例时,它也是十分有用的


static void shuffle(List<?> list)  使用默认随机源对列表进行置换,所有置换发生的可能性都是大致相等的

static void shuffle(List<?> list, Random rand) 使用指定的随机源对指定列表进行置换,所有置换发生的可能性都是大致相等的,假定随机源是公平的。

4) 替换所以的元素(Fill)

使用指定元素替换指定列表中的所有元素。


5) 拷贝(Copy)

用两个参数,一个目标 List 和一个源 List, 将源的元素拷贝到目标,并覆盖它的内容。目标 List 至少与源一样长。如果它更长,则在目标 List 中的剩余元素不受影响。


Collections.copy(list,li): 后面一个参数是目标列表 ,前一个是源列表

6) 返回Collections中最小元素(min)

根据指定比较器产生的顺序,返回给定 collection 的最小元素。collection 中的所有元素都必须是通过指定比较器可相互比较的

7) 返回Collections中最大元素(max)

根据指定比较器产生的顺序,返回给定 collection 的最大元素。collection 中的所有元素都必须是通过指定比较器可相互比较的

8) lastIndexOfSubList

返回指定源列表中最后一次出现指定目标列表的起始位置


int count = Collections.lastIndexOfSubList(list,li);

9) IndexOfSubList

返回指定源列表中第一次出现指定目标列表的起始位置


int count = Collections.indexOfSubList(list,li);

10) Rotate

根据指定的距离循环移动指定列表中的元素


Collections.rotate(list,-1);

如果是负数,则正向移动,正数则方向移动

2.4注意:

由于set,map都有SortedSet,TreeSet和SortedMap实现类,所以Collections中并没有对set和map支持sort方法

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。