java中的集合和工具类

127 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第10天,点击查看活动详情

1、java的集合体系

Java中的集合从接口层面上看主要分两种:一个是基于Collection的接口,一个是基于Map的接口,如下图:

image.png

image.png

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()