本文整理Java中常用的工具类,如StringUtils, Arrays, CollectionUtils等

StringUtils

StringUtils是Apache Commons Lang3中的提供的操作String工具类。

maven引入

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.5</version>
</dependency>

常用方法

StringUtils支持对null的String对象操作,不会抛出异常

检查字符串是否为空

去除首尾空白字符

比较两个字符串

检查字符串开始

检查字符串结尾

查询子字符串

查询是否存在任意字符的位置

检查是否包含任一(或包含)字符

获取子字符串

基于分隔符来获取子字符串

基于分隔符来拆分为数组(组装成字符串)

删除字符串的部分匹配内容

字符串的查找替换

字符串基于长度填充空格

大小写转换

匹配计数

检查是否仅包含字母、数字、空格

字符串反转

Arrays

返回一个固定大小的列表

public static <T> List<T> asList(T... a) {
    return new ArrayList<>(a);
}

支持多种类型的二分查找重载方法

static int binarySearch(int[] a, int key)
static int binarySearch(int[] a, int fromIndex, int toIndex, int key)
static int binarySearch(Object[] a, Object key)
static int binarySearch(T[] a, T key, Comparator<? super T> c)
...

按照指定位置和长度拷贝数组,返回的数组可能是原数组的截断或扩展(默认值)。

static byte[] copyOf(byte[] original, int newLength)
static int[] copyOf(int[] original, int newLength)
static <T> T[] copyOf(T[] original, int newLength)

static byte[]   copyOfRange(byte[] original, int from, int to)
static long[]   copyOfRange(long[] original, int from, int to)
static <T> T[]  copyOfRange(T[] original, int from, int to)
...

判断两个数组是否相等

数组元素填充

计算数组的hashCode

数组排序

static void sort(char[] a)
static void sort(int[] a)
static void sort(int[] a, int fromIndex, int toIndex)
static <T> void sort(T[] a, Comparator<? super T> c)

static void parallelSort(int[] a)
static <T extends Comparable<? super T>> void parallelSort(T[] a)
static <T> void parallelSort(T[] a, Comparator<? super T> cmp)
...

并行迭代计算

static void parallelPrefix(int[] array, IntBinaryOperator op)
static void parallelPrefix(int[] array, int fromIndex, int toIndex, IntBinaryOperator op)
static <T> void parallelPrefix(T[] array, BinaryOperator<T> op)
...

如:

int[] ints = {1,2,3,4};
Arrays.parallelPrefix(ints, (x,y)->x+y );

System.out.println( Arrays.toString(ints) ); // [1, 3, 6, 10]

针对元素,(并行)计算并设置,类似stream.map会挨个计算

static void setAll(int[] array, IntUnaryOperator generator)
static <T> void setAll(T[] array, IntFunction<? extends T> generator)

static void parallelSetAll(int[] array, IntUnaryOperator generator)
static <T> void parallelSetAll(T[] array, IntFunction<? extends T> generator)
...

基于数组返回stream,来快速操作

static IntStream    stream(int[] array)
static <T> Stream<T>    stream(T[] array)
...

如:

int[] ints = {1,2,3,4};

Arrays.stream(ints)
    .map( x -> x*x )
    .forEach( x -> System.out.print(x + " ") ); // 1 4 9 16

参考