Java开发中常用的工具类方法

一、JDK自带工具包 (java.lang*.java.util.*等)

面是Java中jdk中附带的一些常见工具类及其方法和示例的简介

工具类 / 类所在包

常用方法

描述

示例

Arrays (java.util)

sort()

对数组进行排序

Arrays.sort(arr);

binarySearch()

在数组中执行二分查找

int index = Arrays.binarySearch(arr, key);

equals()

比较两个数组内容是否相等

boolean isEqual = Arrays.equals(arr1, arr2);

fill()

使用特定值填充数组

Arrays.fill(arr, val);

toString()

返回数组内容的字符串表示

String arrayString = Arrays.toString(arr);

ArrayList (java.util)

add()

向列表添加元素

list.add(element);

remove()

移除列表中的元素

list.remove(index);

size()

返回列表中的元素个数

int size = list.size();

get()

获取指定索引位置的元素

Object element = list.get(index);

contains()

判断列表是否包含某个元素

boolean isPresent = list.contains(element);

Collections (java.util)

sort()

对列表进行排序

Collections.sort(list);

reverse()

反转列表

Collections.reverse(list);

shuffle()

随机排列列表

Collections.shuffle(list);

min()/max()

查找集合中的最小/最大值

Object min = Collections.min(collection);

synchronizedList()

返回线程安全的列表

List syncList = Collections.synchronizedList(list);

Math (java.lang)

abs()

返回绝对值

int absolute = Math.abs(-123);

max()/min()

返回两个数中的最大值/最小值

int max = Math.max(10, 20);

sqrt()

返回平方根

double root = Math.sqrt(16);

pow()

返回第一个参数的第二个参数次幂

double power = Math.pow(2, 3);

random()

返回一个随机数

double randomNum = Math.random();

SimpleDateFormat (java.text)

format()

格式化日期为文本

String dateStr = new SimpleDateFormat("yyyy-MM-dd").format(new Date());

parse()

解析文本以生成日期

Date date = new SimpleDateFormat("yyyy-MM-dd").parse("2021-01-01");

UUID (java.util)

randomUUID()

生成随机的唯一标识符

UUID id = UUID.randomUUID();

fromString()

从字符串中创建UUID

UUID id = UUID.fromString(uuidString);

ExecutorService (java.util.concurrent)

submit()

提交一个可执行的任务以供执行

Future result = executor.submit(aCallable);

invokeAll()

执行给定的任务集合

List<Future> results = executor.invokeAll(taskList);

shutdown()

启动有序关闭

executor.shutdown();

awaitTermination()

阻塞直到所有任务在关闭请求后完成执行

executor.awaitTermination(1, TimeUnit.MINUTES);

Stream (java.util.stream)

filter()

对流进行筛选

stream.filter(e -> e > 10).collect(Collectors.toList());

map()

对流中的每个元素应用函数

stream.map(String::toUpperCase).collect(Collectors.toList());

collect()

将流转换成其他形式

List<Integer> list = stream.collect(Collectors.toList());

forEach()

遍历流中的每个元素

stream.forEach(System.out::println);

reduce()

对流中元素进行归约

`int sum = stream

二、Apache Commons 相关

Apache Commons提供的工具类大大简化了日常编码任务,使得开发者可以快速高效地处理常见问题

2.1. 相关maven依赖

<!-- Apache Commons Lang -->
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version>
</dependency><!-- Apache Commons IO -->
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version>
</dependency><!-- Apache Commons Collections -->
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.4</version>
</dependency>

2.2. 相关类库以及方法介绍

工具类 / 所属库

常用方法

描述

使用示例

StringUtils / Apache Commons Lang

isEmpty()

检查字符串是否为空或null

StringUtils.isEmpty(str)

isNotEmpty()

检查字符串是否非空且非null

StringUtils.isNotEmpty(str)

join()

连接数组元素为字符串

StringUtils.join(array, ',')

reverse()

反转字符串

StringUtils.reverse(str)

substringBetween()

获取两个字符串之间的子串

StringUtils.substringBetween(str, "<tag>", "</tag>")

FileUtils / Apache Commons IO

readFileToString()

将文件内容读取为字符串

FileUtils.readFileToString(file, Charset.defaultCharset())

writeStringToFile()

将字符串写入文件

FileUtils.writeStringToFile(file, string, Charset.defaultCharset())

copyFile()

复制文件

FileUtils.copyFile(srcFile, destFile)

deleteQuietly()

安静地删除文件,不抛异常

FileUtils.deleteQuietly(file)

sizeOfDirectory()

计算目录大小

FileUtils.sizeOfDirectory(directory)

RandomStringUtils / Apache Commons Lang

randomAlphabetic()

生成随机字母字符串

RandomStringUtils.randomAlphabetic(5)

randomNumeric()

生成随机数字字符串

RandomStringUtils.randomNumeric(5)

randomAlphanumeric()

生成随机字母数字混合字符串

RandomStringUtils.randomAlphanumeric(5)

NumberUtils / Apache Commons Lang

isCreatable()

检查字符串是否能转换为数字

NumberUtils.isCreatable("123")

toInt()

将字符串转换为int型数字

NumberUtils.toInt("5")

toDouble()

将字符串转换为double型数字

NumberUtils.toDouble("3.14")

max()

返回多个数字中的最大值

NumberUtils.max(1, 2, 3)

min()

返回多个数字中的最小值

NumberUtils.min(1, 2, 3)

IOUtils / Apache Commons IO

toString()

将输入流转换为字符串

IOUtils.toString(inputStream, Charset.defaultCharset())

copy()

将输入流的内容复制到输出流

IOUtils.copy(inputStream, outputStream)

toByteArray()

将输入流转换为字节数组

IOUtils.toByteArray(inputStream)

DigestUtils / Apache Commons Codec

md5Hex()

对字符串进行MD5散列

DigestUtils.md5Hex(string)

sha256Hex()

对字符串进行SHA-256散列

DigestUtils.sha256Hex(string)

CollectionUtils / Apache Commons Collections

isEmpty()

检查集合是否为空

CollectionUtils.isEmpty(collection)

isNotEmpty()

检查集合是否非空

CollectionUtils.isNotEmpty(collection)

intersect()

获取两个集合的交集

CollectionUtils.intersection(a, b)

union()

获取两个集合的并集

CollectionUtils.union(a, b)

subtract()

获取两个集合的差集(在a中不在b中的元素)

CollectionUtils.subtract(a, b)

DateFormatUtils / Apache Commons Lang

format()

格式化日期为字符串

DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss")

三、Guava (Google提供的开源工具库)

Guava是Google提供的一套开源的Java工具库,它包含了很多质量高效的Java工具类。下面是Guava中一些常用的工具类和方法

3.1. 相关maven依赖

<dependencies><!-- Other dependencies --><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.1-jre</version></dependency><!-- Other dependencies -->
</dependencies>

3.2. 相关类库以及方法介绍

工具类/类所在包

常用方法

描述

示例

Lists (com.google.common.collect)

newArrayList()

创建一个ArrayList实例

List<String> list = Lists.newArrayList();

reverse()

返回一个反转的列表视图

List<String> reversed = Lists.reverse(list);

partition()

把列表分割成指定大小的子列表

List<List<String>> parts = Lists.partition(list, 2);

Maps (com.google.common.collect)

newHashMap()

创建一个HashMap实例

Map<String, Integer> map = Maps.newHashMap();

uniqueIndex()

对集合中元素进行唯一性索引

ImmutableMap<String, String> index = Maps.uniqueIndex(list, keyFunction);

filterKeys()

返回一个满足特定键条件的Map视图

Map<String, Integer> filteredMap = Maps.filterKeys(map, Predicates.notNull());

Sets (com.google.common.collect)

newHashSet()

创建一个HashSet实例

Set<String> set = Sets.newHashSet();

intersection()

返回两个集合的交集

Set<String> common = Sets.intersection(set1, set2);

difference()

返回两个集合的差集

Set<String> diff = Sets.difference(set1, set2);

union()

返回两个集合的并集

Set<String> union = Sets.union(set1, set2);

Multimap (com.google.common.collect)

ArrayListMultimap.create()

创建一个多值Map实例

Multimap<String, Integer> multimap = ArrayListMultimap.create();

put()

向Multimap添加键值对

multimap.put(key, value);

get()

根据键获取值集合

Collection<Integer> values = multimap.get(key);

values()

获取所有值的集合

Collection<Integer> allValues = multimap.values();

Cache (com.google.common.cache)

CacheBuilder.newBuilder()

创建一个Cache实例

LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder().build(loader);

put()

向Cache中添加一个元素

cache.put(key, value);

getIfPresent()

如果存在则获取元素

Graph g = cache.getIfPresent(key);

get()

获取缓存中的元素,不存在则使用Loader加载

Graph g = cache.get(key);

invalidate()

从缓存中移除元素

cache.invalidate(key);

Preconditions (com.google.common.base)

checkNotNull()

检查对象是否为null

Preconditions.checkNotNull(value);

checkArgument()

检查表达式是否为真

Preconditions.checkArgument(i >= 0);

checkState()

检查对象的状态

Preconditions.checkState(validateObjectState());

checkElementIndex()

检查索引是否有效

Preconditions.checkElementIndex(index, size);

Strings (com.google.common.base)

isNullOrEmpty()

检查字符串是否为null或空

boolean isNullOrEmpty = Strings.isNullOrEmpty(input);

nullToEmpty()

如果字符串为null,返回空字符串

String safeString = Strings.nullToEmpty(input);

emptyToNull()

如果字符串为空,返回null

String nullableString = Strings.emptyToNull(input);

padEnd()

将字符串扩展到特定长度

String padded = Strings.padEnd(input, minLength, padChar);

padStart()

在字符串前添加字符直到特定长度

String padded = Strings.padStart(input, minLength, padChar);

RateLimiter(com.google.common.util.

concurrent)

RateLimiter.create(double permitsPerSecond)

创建一个RateLimiter实例

RateLimiter rateLimiter = RateLimiter.create(2.0);

rateLimiter.acquire()

请求一个许可,如果许可可用,则立即返回

rateLimiter.acquire();

rateLimiter.acquire(int permits)

请求指定数量的许可,如果许可可用,则立即返回

rateLimiter.acquire(2);

rateLimiter.tryAcquire()

尝试获取一个许可,如果许可可用,则返回true

boolean acquired = rateLimiter.tryAcquire();

rateLimiter.tryAcquire(int permits)

尝试获取指定数量的许可,如果许可可用,则返回true

boolean acquired = rateLimiter.tryAcquire(3);

3.2.1.关于限流RateLimiter

下面是一个完整的示例

import com.google.common.util.concurrent.RateLimiter;public class Example {public static void main(String[] args) {RateLimiter rateLimiter = RateLimiter.create(2.0); // 创建一个每秒允许2个许可的RateLimiter实例// 请求一个许可,如果许可可用,则立即返回rateLimiter.acquire();System.out.println("Task 1 executed");// 请求指定数量的许可,如果许可可用,则立即返回rateLimiter.acquire(2);System.out.println("Task 2 executed");// 尝试获取一个许可,如果许可可用,则返回trueboolean acquired = rateLimiter.tryAcquire();System.out.println("Task 3 acquired: " + acquired);// 尝试获取指定数量的许可,如果许可可用,则返回trueacquired = rateLimiter.tryAcquire(3);System.out.println("Task 4 acquired: " + acquired);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/161801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

S3的概念和使用

工作需要测试数据库从 S3&#xff08;Simple Storage Service&#xff09;导入数据文件&#xff0c;公司有私有S3环境。 S3是一种对象存储&#xff0c;数据模型很简单&#xff0c;就是key-value&#xff0c;key就是一个任意字符串&#xff0c;value是一个文件。 S3的功能就是…

chromium证书校验流程SM2WithSM3(C++源码说明)

文章目录 一、证书链二、证书链校验过程三、证书链签名校验图解四、C++源码4.1 编译TASSL4.2 代码一,直接读取签名值方法4.3 代码二(推荐)4.3.1 获取证书的签名数据4.3.2 获取证书的签名值4.3.3 从证书中获取公钥4.3.4 完整代码4.3.5 代码地址五、补充说明5.1 SM2的Z值算法以…

2023亚太杯数学建模B题思路分析 - 玻璃温室中的微气候法规

1 赛题 问题B 玻璃温室中的微气候法规 温室作物的产量受到各种气候因素的影响&#xff0c;包括温度、湿度和风速[1]。其中&#xff0c;适 宜的温度和风速是植物生长[2]的关键。为了调节玻璃温室内的温度、风速等气候因素 , 温室的设计通常采用带有温室风扇的通风系统&#xf…

《数学之美》第三版的读书笔记一、主要是马尔可夫假设、隐马尔可夫模型、图论深度/广度、PageRank相关算法、TF-IDF词频算法

1、马尔可夫假设 从19世纪到20世纪初,俄国有个数学家叫马尔可夫他提出了一种方法,假设任意一个词出现的概率只同它前面的词有关。这种假设在数学上称为马尔可夫假设。 2、二元组的相对频度 利用条件概率的公式,某个句子出现的概率等于每一个词出现的条件概率相乘,于是可展…

【计算机网络笔记】路由算法之层次路由

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

STM32_5(中断)

中断系统 中断&#xff1a;在主程序运行过程中&#xff0c;出现了特定的中断触发条件&#xff08;中断源&#xff09;&#xff0c;使得CPU暂停当前正在运行的程序&#xff0c;转而去处理中断程序&#xff0c;处理完成后又返回原来被暂停的位置继续运行中断优先级&#xff1a;当…

如何用java的虚拟线程连接数据库

我觉得这个很简单 首先确保你idea支持jdk21. 然后把idea编译成的目标字节码设置为21版本的 然后编写代码。 创建虚拟线程的方式有&#xff1a; Runnable runnable () -> {System.out.println("Hello, world!"); };// 创建虚拟线程 Thread virtualThread Thre…

从0开始学习JavaScript--JavaScript迭代器

JavaScript迭代器&#xff08;Iterator&#xff09;是一种强大的编程工具&#xff0c;它提供了一种统一的方式来遍历不同数据结构中的元素。本文将深入探讨JavaScript迭代器的基本概念、用法&#xff0c;并通过丰富的示例代码展示其在实际应用中的灵活性和强大功能。 迭代器的…

【计算思维】蓝桥杯STEMA 科技素养考试真题及解析 2

1、兰兰有一些数字卡片&#xff0c;从 1 到 100 的数字都有&#xff0c;她拿出几张数字卡片按照一定顺序摆放。想一想&#xff0c;第 5 张卡片应该是 A、11 B、12 C、13 D、14 答案&#xff1a;C 2、按照下图的规律&#xff0c;阴影部分应该填 A、 B、 C、 D、 答案&am…

spark如何配置checkpoint

1、sparkSession配置checkpoint的方法 # step1: 在conf中添加checkpoint的保存地址 val spark SparkSession.builder.appName(JobRegister.getJobName("xxx", s"xxxx")).config("hive.exec.dynamic.partition", "true").config(&quo…

2023亚太杯数学建模竞赛(亚太赛)选题建议+初步分析

如下为C君的2023亚太杯数学建模竞赛&#xff08;亚太赛&#xff09;选题建议初步分析&#xff1a; 提示&#xff1a;DS C君认为的难度&#xff1a;C<A<B&#xff0c;开放度&#xff1a;A<B<C。 以下为ABC题选题建议及初步分析&#xff1a; A题&#xff1a;Image…

openssl+ SM2 + linux 签名校验开发实例(C++)

文章目录 一、SM2校验理论基础二、SM2签名校验开发实例&#xff08;C&#xff09; 一、SM2校验理论基础 SM2的校验过程是使用椭圆曲线上的公钥验证签名的有效性。以下是SM2校验的理论基础相关知识点&#xff1a; SM2签名算法&#xff1a; SM2的校验基于椭圆曲线数字签名算法&a…

Vue批量全局处理undefined和null转为““ 空字符串

我们在处理后台返回的信息&#xff0c;有的时候返回的是undefined或者null&#xff0c;这种字符串容易引起用户的误解&#xff0c;所以需要我们把这些字符串处理一下。 如果每个页面都单独处理&#xff0c;那么页面会很冗余&#xff0c;并且后期如果有修改容易遗漏&#xff0c…

SQL面试题挑战:找出使用相同ip的用户

问题&#xff1a;现在有一张用户登陆日志表&#xff0c;该表包括user_id,ip,log_time三个字段&#xff0c;现在需要找出共同使用ip数量超过3个(含)的所有用户对。比如下面的示例数据&#xff0c;101和102用户共同使用的ip为4个&#xff0c;101和103用户共同使用的ip为3个&#…

二十二、数组(4)

本章概要 随机生成泛型和基本数组 随机生成 我们可以按照 Count.java 的结构创建一个生成随机值的工具&#xff1a; Rand.java import java.util.*; import java.util.function.*;import static com.example.test.ConvertTo.primitive;public interface Rand {int MOD 10_0…

5-1 Java 网络编程

第1关&#xff1a;URL类与InetAddress类 任务描述 本关任务&#xff1a;了解网络编程基础知识。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.URL&#xff1b;2.InetAddress。 URL 统一资源定位符&#xff08;Uniform Resource Locator&#xff0c;缩…

C++单调向量算法:得到山形数组的最少删除次数

本题的其它解法 C二分算法&#xff1a;得到山形数组的最少删除次数 题目 我们定义 arr 是 山形数组 当且仅当它满足&#xff1a; arr.length > 3 存在某个下标 i &#xff08;从 0 开始&#xff09; 满足 0 < i < arr.length - 1 且&#xff1a; arr[0] < arr[1…

DevOps 事后分析

众所周知&#xff0c;系统的变化会带来不稳定&#xff0c;进而引发事故。迁移到 DevOps 使世界各地的组织能够以更小的增量和更高的频率进行发布。这降低了特定版本中失败的风险。另一方面&#xff0c;增加发布数量并不一定会减少待命团队需要响应的事件数量。 事件响应团队的…

2023.11.22 homework

七年级数学 五年级数学 也不知道可以教到几年级&#xff0c;估计很快就教不动了。人生啊。

读像火箭科学家一样思考笔记06_初学者之心

1. 专业化是目前流行的趋势 1.1. 通才&#xff08;generalist&#xff09;是指博而不精之人 1.2. 懂得的手艺越多&#xff0c;反而会家徒四壁 1.2.1. 希腊谚语 1.3. 这种态度代价很大&#xff0c;它阻断了不同学科思想的交融 2. 组合游戏 2.1. 某个行业的变革可能始于另一…