suninf 's blog

It’s not what you know, it’s how you think

Java常用工具类

Catalog

本文整理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

参考

Comments