Java常用工具类 : StringUtils、CollectionUtils、ArrayUtils、Lists、Maps等

article/2025/8/23 19:53:07

文章目录

  • StringUtils
    • 引入依赖
    • 判断函数 (isNotBlank系列)
    • 大小写函数 (转换)
    • 删除函数 (remove)
    • 字符替换函数 (replace)
    • 拆分合并函数 (split)
    • 截取函数 (substring)
    • 删除空白函数 (trim)
    • 判断是否相等函数 (equals)
    • 是否包含函数 (contains)
  • CollectionUtils
    • 集合判断函数
    • 并集、交集、交集的补集、差集(扣除)
  • ArrayUtils
    • 数组判断函数:
    • 数组增加函数:
    • 数组移除函数:
    • 其他常用函数:
  • ListUtils
  • Lists (guava包)
  • UrlUtils


StringUtils

该类是 org.apache.commons 的 commons-lang3 包下的类

StringUtils类与String类的区别在于:此类是null安全的,即如果输入参数String为null,则不会抛出NullPointerException异常,代码更健壮。

引入依赖

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

判断函数 (isNotBlank系列)

  • 1.判断是否为空,返回boolean:
    • StringUtils.isEmpty(String str)
  • 2.判断是否非空,返回boolean:
    • StringUtils.isNotEmpty(String str)
  • 3.判断不存在空(数组),返回boolean:
    • StringUtils.isNoneEmpty(CharSequence… css)
  • 4.判断是否存在空(数组),返回boolean:
    • StringUtils.isAnyEmpty(CharSequence… css)
  • 5.判断都存在空(数组),返回boolean:
    • StringUtils.isAllEmpty(CharSequence… css)
  • 6.判断空白,返回boolean:
    • StringUtils.isBlank(String str)
  • 7.判断非空白,返回boolean:
    • StringUtils.isNotBlank(String str)
  • 8.判断是否存在空白(数组),返回boolean:
    • StringUtils.isAnyBlank(CharSequence… css)
  • 9.判断是否都是空白(数组),返回boolean:
    • StringUtils.isAllBlank(CharSequence… css)
  • 10.判断是否都不是空白(数组),返回boolean:
    • StringUtils.isNoneBlank(CharSequence… css)
  • 11`.判断是否空白,返回boolean:
    • StringUtils.isWhitespace(CharSequence cs)

empty和blank的区别

  • isEmpty 等价于 str == null || str.length == 0
  • isBlank 等价于 str == null || str.length == 0 || str.trim().length == 0
  • isNotEmpty等价于 a != null && a.length > 0
  • isNotBlank 等价于 a != null && a.length > 0 && str.trim().length > 0

大小写函数 (转换)

  • 1.首字母大写,返回String:
    • StringUtils.capitalize(String str)
  • 2.首字母小写,返回String:
    • StringUtils.uncapitalize(String str)
  • 3.全部大写,返回String:
    • StringUtils.upperCase(String str)
  • 4.全部小写,返回String:
    • StringUtils.lowerCase(String str)
  • 5.大小写互相转化,返回String:
    • StringUtils.swapCase(String str)
  • 6.判断是否全大写,返回boolean:
    • StringUtils.isAllUpperCase(CharSequence cs)
  • 7.判断是否全小写,返回boolean:
    • StringUtils.isAllLowerCase(CharSequence cs)

删除函数 (remove)

  • 1.从字符串中删除某字符,返回String:
    • StringUtils.remove(String str, char remove)
  • 2.从字符串中删除字符串,返回String:
    • StringUtils.remove(String str, String remove)
  • 3.删除结尾匹配的字符串,返回String:
    • StringUtils.removeEnd(String str, String remove)
  • 4.删除结尾匹配的字符串,忽略大小写,返回String:
    • StringUtils.removeEndIgnoreCase(String str, String remove)
  • 5.删除开头匹配的字符串,返回String:
    • StringUtils.removeStart(String str, String remove)
  • 6.删除开头匹配的字符串,忽略大小写,返回String:
    • StringUtils.removeStartIgnoreCase(String str, String remove)
  • 7.正则表达式删除字符串,返回String:
    • StringUtils.removePattern(String source, String regex)
  • 8.删除所有空格,包括中间,返回String:
    • StringUtils.deleteWhitespace(String str)

字符替换函数 (replace)

  • 1.用replacement替换searchString字符串,返回String;
    max表示替换个数,默认全替换,为-1,可不填。0表示不换。其他表示从头开始替换n个
    • StringUtils.replace(String text, String searchString, String replacement, int max)
  • 2.仅替换一个,从头开始,返回String:
    • StringUtils.replaceOnce(String text, String searchString, String replacement)
  • 3.多个替换, searchList与replacementList需一一对应,返回String:
    • StringUtils.replaceEach(String text, String[] searchList, String[] replacementList)
  • 4.多个循环替换,searchList与replacementList需一一对应,返回String:
    • StringUtils.replaceEachRepeatedly(String text, String[] searchList, String[] replacementList)
  • 5.替换start到end的字符,返回String:
    • StringUtils.overlay(String str,String overlay,int start,int end)

拆分合并函数 (split)

  • 1.特定符号分割字符串,默认为空格,可不填,返回字符数组:
    • StringUtils.split(String str)
  • 2.特定符合分割字符串为长度为n的字符数组,n为0,表示全拆,返回字符数组
    • StringUtils.split(String str, String separatorChars, int n)
  • 3.合并函数,数组合并为字符串:
    • StringUtils.join(byte[] array,char separator)
  • 4.合并函数,separator为合并字符,当为null时,表示简单合并,亦可不填;startIndex和endIndex表示合并数组该下标间的字符,使用separator字符,亦可不填,表示全合并。
    • StringUtils.join(Object[] array,char separator,int startIndex,int endIndex)

截取函数 (substring)

  • 1.截取字符串,返回String:
    • StringUtils.substring(String str,int start)
  • 2.从某字符后字符开始截取,返回String:
    • StringUtils.substringAfter(String str,String separator)
  • 3.截取至最后一处该字符出现,返回String:
    • StringUtils.substringBeforeLast(String str,String separator)
  • 4.从第一次该字符出现后截取,返回String:
    • StringUtils.substringAfterLast(String str,String separator)
  • 5.截取某字符中间的子字符串,返回String:
    • StringUtils.substringBetween(String str,String tag)

删除空白函数 (trim)

  • 1.删除空格,返回String:
    • StringUtils.trim(String str)
  • 2.转换空格为empty,返回String:
    • StringUtils.trimToEmpty(String str)
  • 3.转换空格为null,返回String:
    • StringUtils.trimToNull(String str)
  • 4.删除所有空格,包括字符串中间空格,返回String:
    • StringUtils.deleteWhitespace(String str)

判断是否相等函数 (equals)

  • 1.判断是否相等,返回boolean:
    • StringUtils.equals(CharSequence cs1,CharSequence cs2)
  • 2.判断是否相等,忽略大小写,返回boolean:
    • StringUtils.equalsIgnoreCase(CharSequence cs1,CharSequence cs2)

是否包含函数 (contains)

  • 1.判断第一个参数字符串,是否都出参数2中,返回boolean:
    • StringUtils.containsOnly(CharSequence cs,char… valid)
  • 2.判断字符串中所有字符,都不在参数2中,返回boolean:
    • StringUtils.containsNone(CharSequence cs,char… searchChars)
  • 3.判断字符串是否以第二个参数开始,返回boolean:
    • StringUtils.startsWith(CharSequence str,CharSequence prefix)
  • 4.判断字符串是否以第二个参数开始,忽略大小写,返回boolean:
    • StringUtils.startsWithIgnoreCase(CharSequence str,CharSequence prefix)

CollectionUtils

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.4</version>
</dependency>

集合判断函数

  • 1.判断集合是否为空
    • CollectionUtils.isEmpty(Collection<?> coll)
  • 2.判断集合是否不为空
    • CollectionUtils.isNotEmpty(Collection<?> coll)

并集、交集、交集的补集、差集(扣除)

  • 并集: CollectionUtils.union(listA, listB)
@Test
public void testUnion(){String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };  String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };List<String> listA = Arrays.asList(arrayA);List<String> listB = Arrays.asList(arrayB);//2个数组取并集 System.out.println(ArrayUtils.toString(CollectionUtils.union(listA, listB)));//[A, B, C, D, E, F, G, H, K]
}
  • 交集 : CollectionUtils.intersection(listA, listB)
@Test
public void testIntersection(){String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };  String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };List<String> listA = Arrays.asList(arrayA);List<String> listB = Arrays.asList(arrayB);//2个数组取交集 System.out.println(ArrayUtils.toString(CollectionUtils.intersection(listA, listB)));//[B, D, F]
}
  • 交集的补集 : CollectionUtils.disjunction(listA, listB)
@Test
public void testDisjunction(){String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };  String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };List<String> listA = Arrays.asList(arrayA);List<String> listB = Arrays.asList(arrayB);//2个数组取交集 的补集System.out.println(ArrayUtils.toString(CollectionUtils.disjunction(listA, listB)));//[A, C, E, G, H, K]
}
  • 差集 : CollectionUtils.subtract(listA, listB)
@Test
public void testSubtract(){String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };  String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };List<String> listA = Arrays.asList(arrayA);List<String> listB = Arrays.asList(arrayB);//arrayA扣除arrayBSystem.out.println(ArrayUtils.toString(CollectionUtils.subtract(listA, listB)));//[A, C, E]
}

ArrayUtils

数组判断函数:

  • 1.判断objectToFind是否在array中,返回boolean:
    • ArrayUtils.contains(T[] array, T objectToFind)
  • 2.判断是否为空,返回boolean:
    • ArrayUtils.isEmpty(T[] array)
  • 3.判断数组是否相同,返回boolean:
    • ArrayUtils.isEquals(T array1, T array2)
  • 4.判断数组是否相同长度,并且长度不为0,返回boolean:
    • ArrayUtils.isSameLength(T[] array1, T[] array2)

数组增加函数:

  • 1.添加指定元素到数组中,返回Array:
    • ArrayUtils.add(T[] array, T element)
  • 2.添加指定元素到数组的index位置中,返回Array:
    • ArrayUtils.add(T[] array,Int index, T element)
  • 3.合并两个数组,返回Array:
    • ArrayUtils.addAll(T[] array1, T[] array2)
  • 4.复制数组,返回数组:
    • ArrayUtils.clone(T[] array)

数组移除函数:

  • 1.移除指定位置的元素,返回Array:
    • ArrayUtils.removeElement(T[] array, int element)
  • 2.移除指定元素,返回Array:
    • ArrayUtils.removeElement(T[] array, T element)

数组查找函数:

  • 1.查找数组中是否存在,并返回其第一个位置,返回int,-1代表不存在:
    • ArrayUtils.indexOf(T[] array, T objectToFind)
  • 2.查找数组中是否存在,并返回其最后一个位置,返回int,-1表示不存在:
    • ArrayUtils.lastIndexOf(T[] array, T objectToFind)
  • 3.查找指定位置间的子数组,返回子数组Array:
    • ArrayUtils.subarray(T[] array, int startIndexInclusive, int endIndexExclusive)

其他常用函数:

  • 1.获取数值长度,返回Int:
    • ArrayUtils.getLength(T[] array)
  • 2.数组翻转,该数组本身发生变化,无返回:
    • ArrayUtils.reverse(T[] array)
  • 3.数组转换为Map类型,返回Map:
    • ArrayUtils.toMap(T[] array)
  • 4.数组转换为String,返回String;当数组为null时,返回stringIfNull,可不填,返回“{}”:
    • ArrayUtils.toString(T[] array, String stringIfNull)

ListUtils

在这里插入图片描述

以上是 apache commons-lang3包和commons-collection4包下的常见API


Lists (guava包)

在这里插入图片描述

UrlUtils

public class UrlUtil {public static Map<String, String> getUrlParams(String url) {return getUrlParams(false, url);}public static Map<String, String> getUrlParams(boolean nameLowerCase, String url) {Map<String, String> paramMap = new LinkedHashMap<>();try {URI uri = new URI(url);String query = uri.getQuery();String[] params = query.split("&");for (String param : params) {String name = param.substring(0, param.indexOf("="));String value = param.substring(param.indexOf("=") + 1);if (nameLowerCase) {paramMap.put(name.toLowerCase(), value);} else {paramMap.put(name, value);}}} catch (Exception e) {log.error(String.format("解析URL:%s 参数出错", url), e);}return paramMap;}public static void main(String[] args) {String url = "xxx";Map<String, String> params = getUrlParams(url);System.out.println(params);}
}

http://chatgpt.dhexx.cn/article/MtY2RhWB.shtml

相关文章

Lists的使用

List&#xff08;接口&#xff09;顺序时List最重要的特性&#xff1a;它可保证元素按照规定的顺序排列。List为Collection添加了大量方法&#xff0c;以便我们在List中部插入和删除元素&#xff08;只推荐对LinkedList这样做&#xff09;。List也会生成一个ListIterator&#…

Lists 方法汇总

一、Lists.partition(List<T> list, int size) 将 list 集合按指定长度进行切分&#xff0c;返回新的List<List<T>>集合。 import com.google.common.collect.Lists; import org.junit.Test; import java.util.List;public class ListDemo {Testpublic voi…

LU分解的实现

LU分解是将矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积。矩阵可以不是NxN的矩阵 一个可逆矩阵可以进行LU分解当且仅当它的所有子式都非零。如果要求其中的L矩阵&#xff08;或U矩阵&#xff09;为单位三角矩阵&#xff0c;那么分解是唯一的。同理可知&#xff0c;矩阵的L…

LU分解求线性方程组的解

LU分解是矩阵分解的一种&#xff0c;可以将一个矩阵分解为一个上三角矩阵和一个下三角矩阵的乘积。 LU分解可以用来求逆矩阵&#xff0c;解线性方程组等。本文将介绍LU分解求线性方程组的解。 1.定义 如果A是一个方阵&#xff0c;A的LU分解是将A分解成如下形式: 其中L,U分别为…

矩阵分析——LU分解

LU分解初步 矩阵的LU分解主要用来求解线性方程组或者计算行列式。在使用初等行变换法求解线性方程组的过程中&#xff0c;系数矩阵的变化情况如下&#xff1a; 由上可知&#xff1a; &#xff0c;其中U就是上面矩阵A经过行变换后的上三角矩阵&#xff0c;Eij表示将i行元素与j行…

Doolittle分解法(LU分解)详细分析以及matlab的实现

一、基本介绍 前面介绍的Gauss消去法实际上做的事情是将系数矩阵A做了一个三角分解&#xff0c;即&#xff1a; ALU 式&#xff08;1&#xff09; 其中&#xff0c;L为单位下三角阵&#xff0c;U为上三角阵&#xff0c;该分解唯一。若A为非奇异&#xff0c;则U也非奇异。…

线性代数笔记10——矩阵的LU分解

在线性代数中&#xff0c; LU分解(LU Decomposition)是矩阵分解的一种&#xff0c;可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积&#xff08;有时是它们和一个置换矩阵的乘积&#xff09;。LU分解主要应用在数值分析中&#xff0c;用来解线性方程、求反矩阵或…

线性代数——LU(LR)分解

文章目录 定义为什么要LU分解为什么能做到LU分解 利用LU分解求行列式值利用LU分解求解线性方程组利用LU分解求逆矩阵对角线上元素有0的情况 定义 定义&#xff1a;给定矩阵A&#xff0c;将A表示成下三角矩阵L和上三角矩阵U的乘积&#xff0c;称为LU分解。再进一步&#xff0c;…

LU分解Matlab算法分析

最近矩阵分析老师出了一道题目作为作业&#xff0c;是一道程序题&#xff0c;题目是对A矩阵做LU分解&#xff0c;要求能对A实现PALU的分解&#xff0c;并最终输出L&#xff0c;U&#xff0c;P矩阵。 先来解读下题目&#xff0c;寥寥几句话&#xff0c;里面囊括的信息量却不少&a…

LU分解,LDLT分解,Cholesky分解

LU分解 如果方阵是非奇异的&#xff0c;即的行列式不为0&#xff0c;LU分解总是存在的。 ALU&#xff0c;将系数矩阵A转变成等价的两个矩阵L和U的乘积&#xff0c;其中L和U分别是下三角和上三角矩阵&#xff0c;而且要求L的对角元素都是1&#xff0c;形式如下&#xff1a; 本…

矩阵的直接LU分解法

上篇博文由高斯消去法的矩阵形式推出了矩阵的LU分解&#xff1a;矩阵的三角分解法&#xff1b; 实际上&#xff0c;可以直接处理矩阵&#xff0c;得到矩阵的LU分解&#xff0c;这就是矩阵的直接LU分解&#xff1b;直接通过矩阵的元素得到计算LU元素的递推公式&#xff0c;不需…

LU分解、LDLT分解和Cholesky分解

LU分解 概念&#xff1a;假定我们能把矩阵A写成下列两个矩阵相乘的形式&#xff1a;ALU&#xff0c;其中L为下三角矩阵&#xff0c;U为上三角矩阵。这样我们可以把线性方程组Ax b写成 Ax (LU)x L(Ux) b。令Ux y&#xff0c;则原线性方程组Ax b可首先求解向量y 使Ly b&am…

A的LU分解

前面我们曾经通过高斯消元将矩阵A最终转化成了上三角阵U&#xff0c;那么今天我们就继续深入探索A和U之间到底有什么样的联系。在开始之前&#xff0c;先交代一些需用到的基础理论。假设A是可逆阵&#xff0c;则有AA-1I&#xff0c;两边同时转置&#xff0c;根据乘积的转置等于…

LU分解(matlab实现)

LU分解(LU Decomposition)是矩阵分解的一种&#xff0c;可以将一个矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积。 主要的算法思路是从下至上地对矩阵A做初等行变换&#xff0c;将对角线左下方的元素变成零&#xff0c;这些行变换的效果等同于左乘一系列单位下三角矩阵&…

矩阵的LU分解,LU分解的推广,LU分解有什么意义,为什么要用LU分解。

一点点数学&#xff01;开干&#xff01; 参考书籍&#xff1a;《矩阵分析与计算》李继根 张新发编著 矩阵的LU分解&#xff1a; LU分解定理&#xff1a;如果n阶方阵A的各阶顺序主子式≠0&#xff08;K1、2、3&#xff0c;…&#xff0c;n&#xff09;&#xff0c;即A的各阶…

LU分解(图解)

三角分解(LU分解) 在线性代数中&#xff0c; LU分解(LU Decomposition)是矩阵分解的一种&#xff0c;可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积&#xff08;有时是它们和一个置换矩阵的乘积&#xff09;。LU分解主要应用在数值分析中&#xff0c;用来解线…

矩阵系列:LU分解

1矩阵LU分解模块 1.1 LU分解数学表达 首先要明确的是&#xff0c;矩阵的LU分解是有局限性的&#xff0c;即LU分解只针对非奇异矩阵。那么什么是非奇异矩阵呢&#xff1f;即各阶顺序主子式不为零。 &#xff08;1&#xff09;高斯消去法 LU分解的思想来源于高斯消去法&#xff…

LU分解(图解与应用举例)

三角分解(LU分解) 在线性代数中&#xff0c; LU分解(LU Decomposition)是矩阵分解的一种&#xff0c;可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积&#xff08;有时是它们和一个置换矩阵的乘积&#xff09;。LU分解主要应用在数值分析中&#xff0c;用来解线…

矩阵分解入门——LU分解

文章目录 LU分解LU分解简介LU分解与高斯分解的对比LU的主要用途使用LU矩阵的注意事项初等矩阵与消元LU分解与配方法实际效果对比(matlab)使用LU分解中的一些特例 A A A矩阵中主元&#xff08;位于第一行第一列的元素&#xff09;为0LU分解后 U U U为非满秩 LU分解的推广1——LD…

C语言,折半查找法

折半查找&#xff0c;也称二分查找&#xff0c;在某些情况下相比于顺序查找&#xff0c;使用折半查找算法的效率更高。但是该算法的使用的前提是静态查找表中的数据必须是有序的。 问题分析&#xff1a; 二分查找法&#xff08;也叫折半查找&#xff09;其本质是分治算法的一…