Java中Arrays工具類的一些常見(jiàn)方法總結(jié)
前言
在Java中,Arrays類是一個(gè)實(shí)現(xiàn)對(duì)數(shù)組操作的工具類,包括了各種各樣的靜態(tài)方法,可以實(shí)現(xiàn)數(shù)組的排序和查找、數(shù)組的比較和對(duì)數(shù)組增加元素,數(shù)組的復(fù)制和將數(shù)組轉(zhuǎn)換成字符串等功能。這些方法都有對(duì)所有基本類型的重載方法。
基本的常用方法包括;
1.Arrays.asList()
觀察源碼可知:此方法內(nèi)部的參數(shù):為一個(gè)動(dòng)態(tài)參數(shù)或者一個(gè)數(shù)組(必須為引用類型,因?yàn)榉祷氐牧斜韮?nèi)部不能為基本數(shù)據(jù)類型),即一組相同類型的值
- 作用:將一組相同類型的參數(shù)或者數(shù)組,以List(列表)的類型返回,
轉(zhuǎn)化原因(使用場(chǎng)景):因?yàn)閿?shù)組大小固定,不易更改,可通過(guò)轉(zhuǎn)化列表,通過(guò)具體的列表形式操作
例子;
2.Arrays.binarySearch():使用前提,必須在有序數(shù)組中
通過(guò)快捷輸入可了解到,此方法在Arrays類中是重載的,不同的參數(shù)(參數(shù)的類型,個(gè)數(shù)),適用于不同的場(chǎng)景。
此方法的作用:通過(guò)二分查找在 “有序數(shù)組”中查找目標(biāo)值。返回目標(biāo)值在數(shù)組中的下標(biāo),若未查找到,返回一個(gè)小于0的數(shù)。
以常用方法:舉例
- 參數(shù): (數(shù)組名稱,目標(biāo)值)
- 參數(shù):(數(shù)組名稱,查找范圍的初始索引,查找范圍的末端索引,目標(biāo)值)
int[] array = {1,2,3,4,5,6,7,8,9}; int index = Arrays.binarySearch(array , 8); System.out.println(index);
int[] array = {1,2,3,4,5,6,7,8,9}; int index = Arrays.binarySearch(array, 5,array.length,8); System.out.println(index);
觀察其內(nèi)部源代碼可知:
其內(nèi)部設(shè)有一個(gè)二分查找的private私有的算法,不過(guò)不同的參數(shù)傳入,最終都是利用該二分查找算法返回目標(biāo)值的下標(biāo)
3.Arrays.copyOf()
同理:通過(guò)快捷輸入可了解到,此方法在Arrays類中是重載的,不同的參數(shù)(參數(shù)的類型,個(gè)數(shù)),適用于不同的場(chǎng)景。
主要作用;對(duì)目標(biāo)數(shù)組復(fù)制,從頭開(kāi)始復(fù)制長(zhǎng)度為n個(gè)元素
- 參數(shù):(目標(biāo)數(shù)組名稱,需復(fù)制的長(zhǎng)度)
觀察源碼:通常創(chuàng)建一個(gè)長(zhǎng)度為復(fù)制長(zhǎng)度的新數(shù)組,再通過(guò)System類提供的arrayCopy方法復(fù)制到新數(shù)組,再返回出去。
例子:
int[] array = {1,2,3,4,5,6,7,8,9}; int[] arr = Arrays.copyOf(array, 1); int[] arr1 = Arrays.copyOf(array, 5); int[] arr2 = Arrays.copyOf(array, 8); System.out.println(Arrays.toString(arr)); System.out.println(Arrays.toString(arr1)); System.out.println(Arrays.toString(arr2));
4.Arrays.copyOfRange()
同理:通過(guò)快捷輸入可了解到,此方法在Arrays類中是重載的,不同的參數(shù)(參數(shù)的類型,個(gè)數(shù)),適用于不同的場(chǎng)景。
主要作用:對(duì)目標(biāo)數(shù)組復(fù)制,某個(gè)區(qū)間
- 參數(shù)(目標(biāo)數(shù)組名稱,開(kāi)始復(fù)制下標(biāo),結(jié)束下標(biāo)(不包含結(jié)束下標(biāo)位置元素))
觀察源碼:在調(diào)用該方法后,先判斷結(jié)束下標(biāo)是否大于初始下標(biāo),若小于,則拋出下標(biāo)錯(cuò)誤異常(初始下標(biāo)>結(jié)束小標(biāo)),
若下標(biāo)正常,結(jié)束下標(biāo)-初始下標(biāo)即復(fù)制后的新數(shù)組長(zhǎng)度,創(chuàng)建新數(shù)組,使用System.arrcopy()方法復(fù)制,再返回出去。
例子:
int[] array = {1,2,3,4,5,6,7,8,9}; int[] arr = Arrays.copyOfRange(array, 3, 7); int[] arr1 = Arrays.copyOfRange(array, 1, 5); int[] arr2 = Arrays.copyOfRange(array, 2, 9); System.out.println(Arrays.toString(arr)); System.out.println(Arrays.toString(arr1)); System.out.println(Arrays.toString(arr2));
5.Arrays.fill()
同理:通過(guò)快捷輸入可了解到,此方法在Arrays類中是重載的,不同的參數(shù)(參數(shù)的類型,個(gè)數(shù)),適用于不同的場(chǎng)景。
主要作用:填充數(shù)組,
- 參數(shù):(數(shù)組名稱,填充元素)
(數(shù)組名稱,填充區(qū)間的初始下標(biāo),填充區(qū)間的結(jié)束下標(biāo),填充元素)
觀察源碼:
兩個(gè)參數(shù)的源碼:由源碼可知,此靜態(tài)方法是通過(guò)傳參后,利用for循環(huán)將其所有值改變
區(qū)間填充:四個(gè)參數(shù)的源碼,此靜態(tài)方法再傳參后,先根據(jù)數(shù)組的長(zhǎng)度檢查,區(qū)間的初始下標(biāo)以及結(jié)束下標(biāo)是否合理,如果合理,通過(guò)for循環(huán)進(jìn)行改變?cè)刂?,否則拋出下標(biāo)異常
例子:
int[] nums = {1,2,3,3,5,6,7}; Arrays.fill(nums,-1);//數(shù)組全部填充覆蓋 System.out.println(Arrays.toString(nums)); Arrays.fill(nums, 1,5,9);//數(shù)組區(qū)間填充覆蓋 System.out.println(Arrays.toString(nums));
6.Arrays.sort():此方法再Arrays類中也是重載。
主要作用:可對(duì)各種類型的數(shù)組排序
- 參數(shù)(數(shù)組名稱)
(數(shù)組名稱,比較器的內(nèi)部類(自定義比較規(guī)則))
觀察源碼
例子:
基本類型數(shù)組
int[] nums = {99,8,3,3,34,6,7}; Arrays.sort(nums);//對(duì)基本類型數(shù)組排序
自定義比較引用類型數(shù)組
7.Arrays.toString()
主要作用:快速打印一維數(shù)組所有元素
- 參數(shù)(數(shù)組名稱)
觀察源碼:通過(guò)檢查是否為空,不為空,檢查數(shù)組長(zhǎng)度,若為0,則返回字符串"[]",若大于0,則創(chuàng)建可變字符串StringBuilder,通過(guò)尾部追加雙引號(hào),中括號(hào),及數(shù)組元素,并輸出這個(gè)可變字符串
例子
int[] nums = {99,8,3,3,34,6,7}; System.out.println(Arrays.toString(nums));
總結(jié)
到此這篇關(guān)于Java中Arrays工具類的一些常見(jiàn)方法總結(jié)的文章就介紹到這了,更多相關(guān)Java Arrays工具類方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot實(shí)現(xiàn)TLS雙向認(rèn)證的方法
本文介紹了使用keytool生成和管理自簽名CA證書(shū)、服務(wù)器證書(shū)和客戶端證書(shū)的方法,適合Java生態(tài)系統(tǒng),通過(guò)配置信任庫(kù)和服務(wù)器/客戶端配置,實(shí)現(xiàn)了Spring Boot中的TLS雙向認(rèn)證,感興趣的朋友一起看看吧2025-02-02SpringBoot+Prometheus+Grafana實(shí)現(xiàn)應(yīng)用監(jiān)控和報(bào)警的詳細(xì)步驟
這篇文章主要介紹了SpringBoot+Prometheus+Grafana實(shí)現(xiàn)應(yīng)用監(jiān)控和報(bào)警的詳細(xì)步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02基于Java實(shí)現(xiàn)一個(gè)復(fù)雜關(guān)系表達(dá)式過(guò)濾器
這篇文章主要為大家詳細(xì)介紹了如何基于Java實(shí)現(xiàn)一個(gè)復(fù)雜關(guān)系表達(dá)式過(guò)濾器。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-07-07Java中實(shí)現(xiàn)List分隔成子List詳解
大家好,本篇文章主要講的是Java中實(shí)現(xiàn)List分隔成子List詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01Java?如何接收kernel傳過(guò)來(lái)的數(shù)組(推薦)
這篇文章主要介紹了Java?如何接收kernel傳過(guò)來(lái)的數(shù)組,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-08-08SpringBoot靜態(tài)資源的訪問(wèn)方法詳細(xì)介紹
最近在做SpringBoot項(xiàng)目的時(shí)候遇到了“白頁(yè)”問(wèn)題,通過(guò)查資料對(duì)SpringBoot訪問(wèn)靜態(tài)資源做了總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-09-09