1. Collections 和 Collection 有什么区别?
1. Collection 是集合框架中的一个顶层接口, 它里面定义了单列集合的共性方法. 它有两个常用的子接口,
List: 对元素都有定义索引. 有序的. 可以重复元素. Set: 不可以重复元素. 无序.
2. Collections 是集合框架中的一个工具类. 该类中的方法都是静态的, 提供的方法中有可以对 list 集合进行排序, 二分查找等方法.
通常常用的集合都是线程不安全的. 因为要提高效率. 如果多线程操作这些集合时, 可以通过该工具类中的同步方法, 将线程不安全的集合, 转换成安全的.
2. Collections 工具类的常用方法
排序操作
1. void reverse(List list): 反转
2. void shuffle(List list), 随机排序
3. void sort(List list), 按自然排序的升序排序
4. void sort(List list, Comparator c); 定制排序, 由 Comparator 控制排序逻辑
5. void swap(List list, int i , int j), 交换两个索引位置的元素
6. void rotate(List list, int distance), 旋转. 当 distance 为正数时, 将 list 后 distance 个元素整体移到前面. 当 distance 为负数时, 将 list 的前 distance 个元素整体移到后面.
查找, 替换操作
1. int binarySearch(List list, Object key), 对 List 进行二分查找, 返回索引, 注意 List 必须是有序的
2. int max(Collection coll), 根据元素的自然顺序, 返回最大的元素. 类比 int min(Collection coll)
3. int max(Collection coll, Comparator c), 根据定制排序, 返回最大元素, 排序规则由 Comparatator 类控制. 类比 int min(Collection coll, Comparator c)
4. void fill(List list, Object obj), 用元素 obj 填充 list 中所有元素
5. int frequency(Collection c, Object o), 统计元素出现次数
6. int indexOfSubList(List list, List target), 统计 targe 在 list 中第一次出现的索引, 找不到则返回 - 1, 类比 int lastIndexOfSubList(List source, list target).
7. boolean replaceAll(List list, Object oldVal, Object newVal), 用新元素替换旧元素.
同步控制
Collections 中几乎对每个集合都定义了同步控制方法, 例如 SynchronizedList(), SynchronizedSet() 等方法, 来将集合包装成线程安全的集合. 下面是 Collections 将普通集合包装成线程安全集合的用法
- package collection.collections;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.Collections;
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
- public class SynchronizedTest {
- public static void main(String[] args) {
- Collection c = Collections.synchronizedCollection(new ArrayList());
- List list = Collections.synchronizedList(new ArrayList());
- Set s = Collections.synchronizedSet(new HashSet());
- Map m = Collections.synchronizedMap(new HashMap());
- }
- }
参考: https://www.cnblogs.com/fysola/p/6021134.html
来源: http://www.bubuko.com/infodetail-2888392.html