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.pswp.cn/news/161801.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161801.shtml
英文地址,請注明出處:http://en.pswp.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. 某個行業的變革可能始于另一…