Java集合相关的常用工具类简介说明

戚薇 Java教程 发布时间:2022-07-11 21:52:35 阅读数:17536 1
下文笔者将讲述java集合类中常用的工具类简介说明,如下所示
Java中的集合类既可以当做放其他数据的容器
 又可以当做常见的数据结构使用
Java中提供了很多好用的工具类来操作这些集合类

java常用工具类说明

JDK本身提供的工具类 
Guava提供的工具类 
Apache common-Collection提供的工具类

JDK提供的工具类

Arrays
Collections
Objects

Arrays是操作数组对象的工具类
Collections是操作集合对象的工具类
Objects是操作引用数据类型对象的工具类

Arrays的常用方法

普通排序
Arrays.sort(int[] a)
Arrays.sort(int[] a, int fromIndex, int toIndex)
并行排序:JDK1.8新增
Arrays.parallelSort(int[] a)
Arrays.parallelSort(int[] a, int fromIndex, int toIndex)

并行计算:
  JDK1.8新增
  支持函数式编程
   根据传入的方法进行一次计算 
Arrays.parallelPrefix(int[] array, IntBinaryOperator op)
Arrays.parallelPrefix(int[] array, int fromIndex, int toIndex, IntBinaryOperator op)
二分法查找
前提是该数组已经进行了排序
Arrays.binarySearch(int[] a, int key)
Arrays.binarySearch(int[] a, int fromIndex, int toIndex, int key)
判断两个数组是否相等
Arrays.equals(int[] a, int[] a2)
对数组进行填充
Arrays.fill(int[] a, int val)
Arrays.fill(int[] a, int fromIndex, int toIndex, int val)
复制数组
Arrays.copyOf(int[] original, int newLength)
    返回赋值后的数组,数组长度为newLength。
Arrays.copyOfRange(int[] original, int from, int to)
toString
将元素用","隔开
包裹在"[ ]"内
Arrays.toString(int[] a)
Arrays.deepToString(Object[] a)方法内部调用了a.toString()。
更改元素值
JDK1.8新增
支持函数式编程
setAll(int[] array, IntUnaryOperator generator)
setAll(long[] array, IntToLongFunction generator)
setAll(double[] array, IntToDoubleFunction generator)
setAll(T[] array, IntFunction<? extends T> generator)
数组转集合
Arrays.aslist(T... a) 返回List<T>
生成并行遍历spliterator
JDK1.8新增
Arrays.spliterator(int[] array)
Arrays.spliterator(int[] array, int startInclusive, int endExclusive)
int、long、double和实现了Spliterator接口的类具有该类型方法
生成Stream类
JDK1.8新增
Arrays.stream(int[] a)
Arrays.stream(int[] array, int startInclusive, int endExclusive)
int、long、double和实现了Stream接口的类具有该类型方法。
Collections的常用方法
排序
Collections.sort(List list) 
T或其父类需要实现Comparable接口
Collections.sort(List list, Comparator<? super T> c) 

Collections.sort()的源码
public static <T> void sort(List<T> list, Comparator<? super T> c) {
  list.sort(c);
}
List.sort()源码
default void sort(Comparator<? super E> c) {
	Object[] a = this.toArray();
	Arrays.sort(a, (Comparator) c); // 调用Arrays.sort()来进行排序
	ListIterator<E> i = this.listIterator();
	for (Object e : a) {
		i.next();
		i.set((E) e);
	}
}
注意事项:
Collections.sort()最终调用的是Arrays.sort()进行排序。
查到索引
Collections.binarySearch(List<? extends Comparable<? super T>> list, T key) Collections.binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
顺序反转
Collections.reverse(List<?> list)
乱序 Collections.shuffle(List<?> list)
指定元素互换
Collections.swap(List<?> list, int i, int j)
填充
Collections.fill(List<? super T> list, T obj)
复制
Collections.copy(List<? super T> dest, List<? extends T> src)
求最大值最小值
Collections.min(Collection<? extends T> coll)
Collections.min(Collection<? extends T> coll, Comparator<? super T> comp)
Collections.max(Collection<? extends T> coll)
Collections.max(Collection<? extends T> coll, Comparator<? super T> comp)
转动元素
Collections.rotate(List<?> list, int distance)

distance可以接受负数
将list元素整体向后移动distance的距离
原来最后的distance个元素放到最前面(类似与一个圆圈转动)
替换元素
Collections.replaceAll(List list, T oldVal, T newVal)
子集合索引
Collections.indexOfSubList(List source, List target)
Collections.lastIndexOfSubList(List source, List target)
如果不是子集合,返回-1
转换为不可变集合
Collections.unmodifiableCollection(Collection<? extends T> c)
将集合转换为不可变集合read-only
装饰者模式
使用final修饰iterator
增删元素的方法throw new UnsupportedOperationException()

Collections.unmodifiableSet(Set<? extends T> s)
Collections.unmodifiableList(List<? extends T> list)
Collections.unmodifiableMap(Map<? extends K, ? extends V> m)
转换为同步集合
Collections.synchronizedCollection(Collection c)
Collections.synchronizedCollection(Collection c, Object mutex) 指定mutex对象作为同步锁,将集合转换为线程安全的同步集合。装饰着模式,方法内使用了 synchronized (mutex) { ... }保证线程安全
Collections.synchronizedSet(Set s)
Collections.Collections.synchronizedSet(Set s, Object mutex)
Collections.synchronizedList(List list)
Collections.synchronizedList(List list, Object mutex)
Collections.synchronizedMap(Map<K, V>)
元素受限制集合
Collections.checkedCollection(Collection c, Class type)
由于JDK1.5引入了泛型,采用该方法,保证运行期集合中增加的元素只能是指定的类型。同样是装饰着模式。
Collections.checkedQueue(Queue queue, Class type)
Collections.checkedSet(Set, Class)
Collections.checkedList(List, Class)
Collections.checkedMap(Map<K, V>, Class, Class)
生成空的不可变集合
Collections.emptyIterator()
Collections.emptyListIterator()
Collections.emptyEnumeration()
Collections.emptySet()
Collections.emptyList()
Collections.emptyMap()
只有1个元素的不可变集合
Collections.singleton(T)
Collections.singletonList(T)
Collections.singletonMap(K, V)
拥有n个相同元素的不可变集合
Collections.nCopies(int, T)
反序比较器
Collections.reverseOrder(Comparator)
返回一个Comparator,返回值与参数值是相反顺序的比较器
转换为枚举类型的API
Collections.enumeration(Collection)
返回Enumeration
将Enumeration转换为集合
Collections.list(Enumeration)
返回ArrayList
元素在集合中的个数
Collections.frequency(Collection<?>, Object)
返回int
两个元素是否有交集
Collections.disjoint(Collection, Collection)
返回boolean
增加元素
addAll(Collection<? super T> c, T... elements)
由于List接口拥有listItegertor()方法
与List相关的大部分操作内部会判断阀值
超过阀值则采用listIterator遍历
小于阀值则采用for循环索引遍历
不同的方法阀值不同

Objects类
Objects.equals(Object a, Object b)
  public static boolean equals(Object a, Object b) {
    return a == b || (a != null && a.equals(b));
  }
Guava工具类
集合接口 属于JDK还是*Guava* 对应的Guava工具类
Collection JDK Collections2:不要和java.util.Collections混淆
List JDK Lists
Set JDK Sets
SortedSet JDK Sets
Map JDK Maps
SortedMap JDK Maps
Queue JDK Queues
Multiset Guava Multisets
Multimap Guava Multimaps
BiMap Guava Maps
Table Guava Tables
Apache提供的Collection
Apache提供的集合工具类功能也非常强大
还提供了集合的求交集、并集和差集等功能
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaCourse/202207/3955.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者