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方法