本文整理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对象操作,不会抛出异常
- isEmpty / isBlank
检查字符串是否为空
- trim / strip
去除首尾空白字符
- equals / compare
比较两个字符串
- startsWith
检查字符串开始
- endsWith
检查字符串结尾
- indexOf / lastIndexOf / contains
查询子字符串
- IndexOfAny / lastIndexOfAny / indexOfAnyBut / lastIndexOfAnyBut
查询是否存在任意字符的位置
- containsOnly / containsNone / containsAny
检查是否包含任一(或包含)字符
- substring / left / right / mid
获取子字符串
- substringBefore / substringAfter / substringBetween
基于分隔符来获取子字符串
- split / join
基于分隔符来拆分为数组(组装成字符串)
- remove
删除字符串的部分匹配内容
- replace / overlay
字符串的查找替换
- leftPad / rightPad / center / repeat
字符串基于长度填充空格
- upperCase / lowerCase / swapCase / capitalize / uncapitalize
大小写转换
- countMatches
匹配计数
- isAlpha / isNumeric / isWhitespace / isAsciiPrintable
检查是否仅包含字母、数字、空格
- reverse
字符串反转
Arrays
- asList
返回一个固定大小的列表
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
- binarySearch
支持多种类型的二分查找重载方法
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)
...
- copyOf / copyOfRange
按照指定位置和长度拷贝数组,返回的数组可能是原数组的截断或扩展(默认值)。
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)
...
- equals
判断两个数组是否相等
- fill
数组元素填充
- hashCode
计算数组的hashCode
- sort & parallelSort
数组排序
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)
...
- parallelPrefix
并行迭代计算
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]
- setAll & parallelSetAll
针对元素,(并行)计算并设置,类似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
基于数组返回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