一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第10天,点击查看活动详情。
1、java的集合体系
Java中的集合从接口层面上看主要分两种:一个是基于Collection的接口,一个是基于Map的接口,如下图:
2、java的集合工具类
java中的集合工具类,主要有2个
2.1、java.util.Arrays
严格意义上说Arrays不能算集合类,多数方法都是针对数组的。日常使用最多的可能只有1个方法
public static <T> List<T> asList(T... a)
2.2、java.util.Collections
java.util.Collections可以算名副其实的集合工具类了,主要包含4个功能:
2.2.1、排序
void reverse(List list); //反转
void shuffle(List list); //随机排序
void sort(List list);//按自然排序的升序排序
void sort(List list, Comparator c);//定制排序,由Comparator控制排序逻辑
void swap(List list, int i , int j);//交换两个索引位置的元素
2.2.2、 查找
// 对List进行二分查找,返回索引,注意List必须是有序的
int binarySearch(List list, Object key);
// 根据元素的自然顺序,返回最大的元素。 类比int min(Collection coll)
int max(Collection coll);
// 根据定制排序,返回最大元素,排序规则由Comparatator类控制。类比int min(Collection coll, Comparator c)
int max(Collection coll, Comparator c),
// 用元素obj填充list中所有元素
void fill(List list, Object obj);
// 统计元素出现次数
int frequency(Collection c, Object o);
//统计targe在list中第一次出现的索引,找不到则返回-1,类比int lastIndexOfSubList(List source, list target).
int indexOfSubList(List list, List target);
// 用新元素替换旧元素。
boolean replaceAll(List list, Object oldVal, Object newVal);
2.2.3、 同步控制
Collections.synchronizedCollection(new ArrayList());
Collections.synchronizedList(new ArrayList());
Collections.synchronizedSet(new HashSet());
Collections.synchronizedMap(new HashMap());
2.2.4、 不可变集合
//返回一个空的只读集合
emptyXXX()
// 返回一个只包含指定对象,只有一个元素,只读的集合
singletonXXX()
//返回指定集合对象的只读视图
unmodifiableXXX()