开发中,Java集合框架一直都是使用比较频繁的,然而常用的(说成是会用的可能比较贴切)也就那么一两种;集合框架非常的强大,熟悉了整个集合家族不但对开发时选择合适的集合游刃有余,而且这一块也是面试时常常被问到的一个技术点,在此基础上,写一遍文章来总结梳理下集合框架的知识体系,同时也为了方便以后复习。
在复习集合框架之前,先来复习一下Collections这个工具类,该工具类位于java.util包下,提供了一个操作Set、List和Map等集合的工具类,其提供了大量的方法对集合元素进行排序、查询和修改等操作,还提供了将集合对象设置为不可变、对集合对象实现同步控制的方法。
1.集合元素的工具类:Collections
a.排序操作
static void reverse(List list) : 反转指定集合元素的顺序
static void shuffle(List list) : 对List中的元素进行随机的排序
static void sort(List list) : 根据元素的自然顺序对集合中的元素按升序进行排序
static void sort(List list, Comparator c ) : 根据指定Comparator产生的顺序对集合中的元素进行排序
static void swap(List list, int i ,int j ) : 将指定集合中的i处元素和j处元素进行交换
static void rotate(List list, int distance ) : 当distance为正数时,将list集合的后distance个元素“整体”移动到前面;当为负数时,将list集合的后distance个元素“整体”移动到后面;该操作不会改变集合的长度。
b.查找、替换操作
static int binarySearch(List list , Object key ) : 使用二分法搜索指定的list集合,以获得指定对象在list集合中的索引。
static Object max(Collection coll ) :
static Object max(Collection coll, Comparator comp) :
static Object min(Collection coll ) :
static Object min(Collection coll, Comparator comp) :
static void fill(List list, Object o) :
static int frequency(Collection c, Object o) :
static int indexOfSubList(List source, List target) :
static boolean replaceAll(List list, Object oldVal, Object newVal) :
c:同步控制
Collection c = Collections.synchronizedCollection(new ArrayList());
List list = Collections.synchronizedList(new ArrayList());
Set s = Collections.synchronizedSet(new HashSet());
Map m = Collections.synchronizedMap(new HashMap());