Java集合类中工具类

Java集合工具类

0.源码下载

此处我们使用openJDK源码,下载网址是http://hg.openjdk.java.net/

老司机带路教程:https://adoptopenjdk.gitbooks.io/adoptopenjdk-getting-started-kit/en/

1.关键字理解

static和final

方法和变量被static和final修饰,

保证方法和变量不需要初始化就可以使用,变量不可修改、方法不可被覆写,保证了方法内部稳定性。

try、catch、finally

try {
    System.out.println("start");
    throw new Exception("111");
} catch (Exception e) {
    e.printStackTrace();
    System.out.println("222");
    throw new Exception("444");
} finally {
    System.out.println("333");
}

执行顺序是 1234 当catch中发生异常时会在finally执行完毕后抛出异常。

default 关键字

用于接口方法签名前,给接口方法提供默认实现。

volatile关键字

确保了修改可见性

Java集合类中工具类_第1张图片

2.集合类常见方法

工具类要点:

(1)构造器私有,工具类使用时无需构造对象。

(2)方法被staticl修饰,保证方法可直接使用,final修饰常量,保证不可变性。

(3)当要对共享变量做修改时,需要加锁处理线程安全问题。

(4)内部辅助类使用静态内部类。

Arrays 工具类

面向数组使用,主要包含以下方法:

Arrays
--sort 对数组进行排序,底层是DualPivotQuicksort双轴快排。
--parallelSort 并行排序,但只有超大数组才会使用并行处理。
--parallelPrefix 计算累计值,[2,1,2,5]->[2,3,5,7,12]
--spliterator
--binarySearch 二分搜索
--equals 判断两个数组是否相等,判空,判长,判定元素。
--fill 使用指定值填充数组,一个for循环搞定。
--copyOf 拷贝数组 底层使用native方法
--asList 将数组转换为List
--hashCode 生成数组的哈希值
--toString 将数组转换为字符串
--stream 将数组转换为流

其中并行排序的原理是判断数组大小,小于阀值1 << 13 = 8192或者并行级别为1,则走双轴快排;否则走并行排序。

Collections 工具类

面向集合类使用,

Collections
--sort 使用的是List自身的sort方法
--binarySearch 二分查找,底层有基于索引的二分查找和基于迭代器的二分查找
--reverse 反转list
--swap 替换元素
--fill 使用指定元素填充列表
--copy 复制列表
--max 返回最大值
--min 返回最小值
--synchronizedList 创建各种同步集合类,内部操作都是加了synchronized关键字
--unmodifiableList 创建不可修改的集合类

如下泛型规定了必须要实现的接口以及继承的类型

<T extends Object & Comparable<? super T>> T

Objects 工具类

Objects中的方法少了很多,主要有equals、hashCode、hash 等。

``

你可能感兴趣的:(Java,基础,java)