【JAVA工具类及其方法】

字符串处理

org.apache.commons.lang3.StringUtils

方法

用途

isBlank(字符串)

判断字符串是否为空

isNotBlank(字符串)

判断字符串是否不为空

isAnyBlank(final CharSequence... css)

任意一个为空

isNoneBlank(final CharSequence... css)

所有字符都不为空

equals(字符串a,字符串b)

字符串是否相同

equalsIgnoreCase(final CharSequence cs1, final CharSequence cs2)

字符串是否相同,忽略大小写

equalsAnyIgnoreCase(final CharSequence string, final CharSequence...searchStrings)

指定字符串是否等于其中的任意一个字符串,searchStrings支持数组传入

split(字符串,分隔符)

字符串分隔为数组

replace(待替换字符串,替换的字符串)

替换字符串中指定的内容

defaultIfBlank(final T str, final T defaultStr)

字符串为空则给默认值

upperCase(final String str)

转为全大写

lowerCase(final String str)

转为全小写

substring(final String str, int start)

截取字符串

substringBeforeLast(final String str, final String separator)

截取匹配的最后一段字符串的前面内容

indexOf(final CharSequence seq, final CharSequence searchSeq)

字符的下标

indexOfIgnoreCase(final CharSequence str, final CharSequence searchStr, int startPos)

字符串的下标忽略大小写

contains(final CharSequence seq, final CharSequence searchSeq)

前面的字符串是否包含后面的字符串

startsWithIgnoreCase(final CharSequence str, final CharSequence prefix)

以xxx开头忽略大小写

endsWith(final CharSequence str, final CharSequence suffix)

字符串是否以xxx结尾

removeStart(final String str, final String remove)

移除字符串开头的内容

removeEnd(final String str, final String remove)

移除字符串结尾的内容

defaultIfBlank(final T str, final T defaultStr)

如果字符串为空则返回默认值

remove(final String str, final String remove)

移除匹配的内容

trim(final String str)

去除前后空格

org.apache.commons.lang3.RegExUtils

方法

用途

replaceAll(final String text, final String regex, final String replacement)

用给定的替换项替换与给定正则表达式匹配的文本字符串的每个子字符串

org.apache.commons.lang3.math.NumberUtils

方法

用途

replaceAll(final String text, final String regex, final String replacement)

用给定的替换项替换与给定正则表达式匹配的文本字符串的每个子字符串

isParsable(final String str)

检查给定字符串是否为可解析数

isCreatable(final String str)

检查字符串是否为有效的Java数字

toScaledBigDecimal(final String value, final int scale, final RoundingMode roundingMode)

将字符串转换为BigDecimal

isDigits(final String str)

检查字符串是否仅包含数字字符

isNumber(String str)

检查字符串是否为有效的Java数字

集合处理

org.apache.commons.lang3.ArrayUtils

方法

用途

contains

是否包含某个字符串

addAll

添加整个数组

clone

克隆一个数组

isEmpty

是否空数组

add

向数组添加元素

subarray

截取数组

indexOf

查找某个元素的下标

isEquals

比较数组是否相等

toObject

基础类型数据数组转换为对应的Object数组

org.apache.commons.collections.CollectionUtils

方法

用途

isEmpty(集合)

判断集合list是否为空

isNotEmpty(集合)

判断集合list是否不为空

org.apache.commons.collections4.ListUtils

方法

用途

emptyIfNull(集合)

如果参数为null,则返回不可变的空列表,否则返回参数本身

加密工具类

org.apache.commons.codec.digest.DigestUtils

方法

用途

md5Hex

MD5加密,返回32位字符串

sha1Hex

SHA-1加密

sha256Hex

SHA-256加密

sha512Hex

SHA-512加密

md5

MD5加密,返回16位字符串

属性properties文件操作

org.apache.commons.beanutils.PropertyUtils

方法

用途

getProperty

获取对象属性值

setProperty

设置对象属性值

getPropertyDiscriptor

获取属性描述器

isReadable

检查属性是否可访问

copyProperties

复制属性值,从一个对象到另一个对象

getPropertyDiscriptors

获取所有属性描述器

isWriteable

检查属性是否可写

getPropertyType

获取对象属性类型

文件及文件夹操作

org.apache.commons.io.FileUtils

方法

用途

deleteDirectory

删除文件夹

readFileToString

以字符形式读取文件内容

deleteQueitly

删除文件或文件夹且不会抛出异常

copyFile

复制文件

writeStringToFile

把字符写到目标文件,如果文件不存在,则创建

forceMkdir

强制创建文件夹,如果该文件夹父级目录不存在,则创建父级

write

把字符写到指定文件中

listFiles

列举某个目录下的文件(根据过滤器)

copyDirectory

复制文件夹

forceDelete

强制删除文件

文件名操作

org.apache.commons.io.FilenameUtils

方法

用途

getExtension

返回文件后缀名

getBaseName

返回文件名,不包含后缀名

getName

返回文件全名

concat

按命令行风格组合文件路径(详见方法注释)

removeExtension

删除后缀名

normalize

使路径正常化

wildcardMatch

匹配通配符

seperatorToUnix

路径分隔符改成unix系统格式的,即/

getFullPath

获取文件路径,不包括文件名

isExtension

检查文件后缀名是不是传入参数(List<String>)中的一个

文件流工具类

org.apache.commons.io.IOUtils

方法

用途

closeQuietly

关闭一个IO流、socket、或者selector且不抛出异常,通常放在finally块

toString

转换IO流、 Uri、 byte[]为String

copy:IO

流数据复制,从输入流写到输出流中,最大支持2GB

toByteArray

从输入流、URI获取byte[]

write

把字节. 字符等写入输出流

toInputStream

把字符转换为输入流

readLines

从输入流中读取多行数据,返回List<String>

copyLarge

同copy,支持2GB以上数据的复制

lineIterator

从输入流返回一个迭代器,根据参数要求读取的数据量,全部读取,如果数据不够,则失败

转义工具类

org.apache.commons.lang3.StringEscapeUtils

方法

用途

escapeHtml4()

转义html

unescapeHtml4()

反转义html

escapeJava()

转义java

unescapeJava()

反转义java

对象操作

org.apache.http.util.EntityUtils

方法

用途

toString()

把Entity转换为字符串

对象复制

org.springframework.beans.BeanUtils

方法

用途

copyProperties(Object source, Object target)

将1个对象中属性值复制到另一个对象中,注意参数类型保持一致,参数名相同

Guava工具类

com.google.common.collect.ImmutableSet

方法

用途

ImmutableSet<String> set1 = ImmutableSet.of("xxx", "xxx");

创建不可变集合

ImmutableSet<Object> set2 = ImmutableSet.builder() .add("xxx") .add("xxx") .build();

创建不可变集合

ArrayList<String> list = Lists.newArrayList("xxx", "xxx");

创建可变集合

com.google.common.collect.Ordering

方法

用途

ArrayList<Integer> list = Lists.newArrayList(12, 3, 1, 5, 6,null);list.sort(Ordering.natural().nullsFirst());

//从大到小排序,null值排在前面

hutool工具类

Convert 类型转换工具类,用于各种类型数据的转换

方法

用途

toStr(Object value, String defaultValue)

转换为字符串

toStrArray(Object value)

转换为String数组

toList(Class<T> elementType, Object value)

转换为ArrayList


DateUtil 日期时间工具类,定义了一些常用的日期时间操作方法

方法

用途

now()

当前日期时间 yyyy-MM-dd HH:mm:ss

today()

今天日期 yyyy-MM-dd

currentSeconds()

毫秒数

thisYear()

年份

thisMonth()

月份(从0开始)

thisWeekOfMonth()

本月周次(从1开始)

thisWeekOfYear()

本年周次(从1开始)

thisDayOfMonth()

本月第几天(从1开始)

thisDayOfWeek()

本周第几天(从1开始)

thisHour(boolean is24HourClock)

当前小时

thisMinute()

当前分

thisSecond()

当前秒

lastWeek()

上周今天(往前7天)

lastMonth()

上个月今天(往前一个月)

nextWeek()

下周今天(往后7天)

nextMonth()

下个月今天(往后一个月)

yesterday()

昨天同时

tomorrow()

明天同时

StrUtil 字符串工具类,定义了一些常用的字符串操作方法

方法

用途

isBlank(CharSequence str)

字符串是否为空

StrPool 字符串常量

方法

用途

TAB

制表符 "\t"

DOT

点 "."

SLASH

斜杠 "/"

CR

回车符 "\r"

LF

换行符 "\n"

CRLF

Windows 换行 "\r\n"

UNDERLINE

下划线 "_"

DASHED

减号(连接符) "-"

COMMA

逗号 ","

DELIM_START

花括号(左) "{"

DELIM_END

花括号(右) "}"

BRACKET_START

中括号(左) "["

BRACKET_END

中括号(右) "]"

COLON

冒号 ":"

AT

艾特 "@"

EMPTY_JSON

空 JSON "{}"


CollUtil 集合操作的工具类,定义了一些常用的集合操作。

方法

用途

isEmpty(Collection<?> collection)

集合是否为空

isNotEmpty(Collection<?> collection)

集合是否为非空


MapUtil Map操作工具类,可用于创建Map对象及判断Map是否为空。

方法

用途

isEmpty(Map<?, ?> map)

Map是否为空

isNotEmpty(Map<?, ?> map)

Map是否为非空

ArrayUtil 数组操作工具类

方法

用途

containsIgnoreCase(CharSequence[] array, CharSequence value)

数组中是否包含元素,忽略大小写

isEmpty(T[] array)

数组是否为空

isNotEmpty(T[] array)

数组是否为非空

toArray(Collection<T> collection, Class<T> componentType)

将集合转为数组


HttpUtil 基于HttpUrlConnection的Http客户端封装

方法

用途

post(String urlString, String body, int timeout)

发送post请求

stream常用流操作,优点:代码简便,大部分操作不修改原有集合

方法

注释

集合.stream()

将集合转为stream流

流.filter(x -> 布尔条件)

过滤布尔条件为true的数据出来

流.collect(Collectors.toList())

收集结果集为list

流.collect(Collectors.groupingBy(对象::属性)

按照xx分组转为map

流.collect(Collectors.toMap(对象::属性, a -> a, (k1, k2) -> k1))

集合转map,取其中一个参数作为key,value取第一个

流.collect(Collectors.toMap(对象::属性, Function.identity(), (key1, key2) -> key2))

集合转map,取其中一个参数作为key,value取第二个

流.map(对象::属性)

获取流的对象中的某个属性值

流.forEach(f -> console.log(f))

循环,一般不建议循环赋值操作,而是使用普通循环,如for循环或迭代器等循环

流.collect(Collectors.joining(","))

将流转逗号分隔的的字符串,一般是字符串流转为字符串

流.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(对象::属性))), ArrayList::new))

按照某个属性去重

流.distinct()

筛选,通过流所生成元素的 hashCode() 和 equals() 去重

流.collect(Collectors.groupingBy(对象::属性, TreeMap::new, Collectors.toList()))

转为treemap

流.collect(Collectors.toSet())

转为set集合

流.collect(Collectors.groupingBy(x-> x.getA()+"_"+ x.getB()))

按照多参数拼接方式分组,返回map

流.sorted()

自然排序

Stream.of(1, 2, 3, 5)

将内容转为流

流.limit(long maxSize)

截断流,使其元素不超过给定数量

流.skip(long n)

跳过元素,返回一个扔掉了前 n 个元素的流。若流中元素不足 n 个,则返回一个空流。与 limit(n) 互补

流.sum()

值求和

创建Stream

Java8 中的Collection接口被扩展,提供了两个获取流的方法:

  • default Stream stream() : 返回一个顺序流
  • default Stream parallelStream() : 返回一个并行流

可以使用静态方法 Stream.of(), 通过显示值创建一个流。它可以接收任意数量的参数。

  • public static Stream of(T… values) : 返回一个流

Stream 的中间操作

多个中间操作可以连接起来形成一个流水线,除非流水线上触发终止操作,否则中间操作不会执行任何的处理!而在终止操作时一次性全部处理,称为“惰性求值”。

筛选与切片

方 法

描 述

filter(Predicate p)接收 Lambda , 从流中排除某些元素。
distinct()筛选,通过流所生成元素的 hashCode() 和 equals() 去除重复元素
limit(long maxSize)截断流,使其元素不超过给定数量。
skip(long n)跳过元素,返回一个扔掉了前 n 个元素的流。若流中元素不足 n 个,则返回一个空流。与 limit(n) 互补

映射

方 法

描 述

map(Function f)接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。
mapToDouble(ToDoubleFunction f)接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的DoubleStream。
mapToInt(ToIntFunction f)接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的 IntStream。
mapToLong(ToLongFunction f)接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的 LongStream。
flatMap(Function f)接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连接成一个流

排序

方 法

描 述

sorted()产生一个新流,其中按自然顺序排序
sorted(Comparator comp)产生一个新流,其中按比较器顺序排序

Stream 的终止操作

终端操作会从流的流水线生成结果。其结果可以是任何不是流的值,例如:List、Integer,甚至是 void 。

查找与匹配

方 法

描 述

allMatch(Predicate p)检查是否匹配所有元素
anyMatch(Predicate p)检查是否至少匹配一个元素
noneMatch(Predicate p)检查是否没有匹配所有元素
findFirst()返回第一个元素
findAny()返回当前流中的任意元素返回第一个元素
count()返回流中元素总数
max(Comparator c)返回流中最大值
min(Comparator c返回流中最小值
forEach(Consumer c)内部迭代(使用 Collection接口需要用户去做迭代,称为外部迭代。相反,StreamAPI 使用内部迭代——它帮你把迭代做了)

归约

方 法

描 述

reduce(T iden, BinaryOperator b)可以将流中元素反复结合起来,得到一个值。 返回 T
reduce(BinaryOperator b)reduce(BinaryOperator b) 可以将流中元素反复结合起来,得到一个值。返回 Optional

备注: map 和 reduce 的连接通常称为map-reduce 模式,因 Google 用它来进行网络搜索而出名。

收集

方 法

描 述

collect(Collector c)将流转换为其他形式。接收一个Collector接口的实现,用于给Stream中元素做汇的方法

Collector 接口中方法的实现决定了如何对流执行收集操作(如收集到 List、Set、Map)。但是Collectors 实用类提供了很多静态方法,可以方便地创建常见收集器实例,具体方法与实例如下表:

方法

返回类型

作用

例子

toListList把流中元素收集到ListList emps= list.stream().collect(Collectors.toList());
toSetSet把流中元素收集到SetSet emps= list.stream().collect(Collectors.toSet());
toCollectionCollection把流中元素收集到创建的集合Collectionemps=list.stream().collect(Collectors.toCollection(ArrayList::new));
countingLong计算流中元素的个数long count = list.stream().collect(Collectors.counting());
summingIntInteger对流中元素的整数属性求和inttotal=list.stream().collect(Collectors.summingInt(Employee::getSalary));
averagingIntDouble计算流中元素Integer属性的平均值doubleavg= list.stream().collect(Collectors.averagingInt(Employee::getSalary));
summarizingIntIntSummaryStatistics收集流中Integer属性的统计值。 如:平均值IntSummaryStatisticsiss= list.stream().collect(Collectors.summarizingInt(Employee::getSalary));
joiningString连接流中每个字符串String str= list.stream().map(Employee::getName).collect(Collectors.joining());
maxByOptional根据比较器选择最大值Optionalmax= list.stream().collect(Collectors.maxBy(comparingInt(Employee::getSalary)));
minByOptional根据比较器选择最小值Optional min = list.stream().collect(Collectors.minBy(comparingInt(Employee::getSalary)));
reducing归约产生的类型从一个作为累加器的初始值开始,利用BinaryOperator与流中元素逐个结合,从而归约成单个值inttotal=list.stream().collect(Collectors.reducing(0, Employee::getSalar, Integer::sum));
collectingAndThen转换函数返回的类型包裹另一个收集器,对其结果转换函数inthow= list.stream().collect(Collectors.collectingAndThen(Collectors.toList(), List::size));
groupingByMap<K, List>根据某属性值对流分组,属性为K,结果为VMap<Emp.Status, List> map= list.stream().collect(Collectors.groupingBy(Employee::getStatus));
partitioningBypartitioningBy Map<Boolean, List>根据true或false进行分区Map<Boolean,List>vd= list.stream().collect(Collectors.partitioningBy(Employee::getManage));
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值