java基礎(chǔ) -- Arrays類(lèi)

此類(lèi)包含用來(lái)操作數(shù)組(比如排序和搜索)的各種方法。此類(lèi)還包含一個(gè)允許將數(shù)組作為列表來(lái)查看的靜態(tài)工廠。 除非特別注明,否則如果指定數(shù)組引用為 null,則此類(lèi)中的方法都會(huì)拋出 NullPointerException。


1. asList 獲取List集合.

1.1 JDK 文檔

返回一個(gè)受指定數(shù)組支持的固定大小的列表。(對(duì)返回列表的更改會(huì)“直接寫(xiě)”到數(shù)組。)此方法同 Collection.toArray() 一起,充當(dāng)了基于數(shù)組的 API 與基于 collection 的 API 之間的橋梁。返回的列表是可序列化的,并且實(shí)現(xiàn)了 RandomAccess。

1.2 說(shuō)明

Arrays.asList() 方法返回的是一個(gè)固定大小的數(shù)組 , 也就是說(shuō)不可以進(jìn)行**add **和 remove 操作.否則會(huì)產(chǎn)生如下錯(cuò)誤 :

Exception in thread "main" java.lang.UnsupportedOperationException
                            at java.util.AbstractList.add(AbstractList.java:148)
                            at java.util.AbstractList.add(AbstractList.java:108)
                            at com.wsj.utils.ArraysTest.main(ArraysTest.java:19)

1.3 示例代碼

// 方法原型
public static <T> List<T> asList(T... a)
// 使用
List<String> languages = Arrays.asList("C", "C++", "Java");

2. sort 數(shù)組排序

2.1 JDK 文檔

對(duì)指定的 char 型數(shù)組按數(shù)字升序進(jìn)行排序。該排序算法是一個(gè)經(jīng)過(guò)調(diào)優(yōu)的快速排序法 .

2.2 示例代碼

(1) 函數(shù)原型

// 對(duì)數(shù)組內(nèi)所有元素進(jìn)行排序.
public static void sort(char[] a);
// 對(duì)指定范圍內(nèi)的數(shù)據(jù)進(jìn)行排序. 包括fromIndex 不包括 toIndex
public static void sort(char[] a,int fromIndex,int toIndex);
// 其他的類(lèi)型的...

(2)使用

// 1. 排序所有元素  ,   結(jié)果 : [1, 2, 3, 6, 7, 8, 9, 10]
byte[] testArray = {2,1,9,8,3,7,6,10};
Arrays.sort(testArray);
System.out.println(Arrays.toString(testArray));
// 2. 排序 [2-5)     ,  結(jié)果 :  [2, 1, 3, 8, 9, 7, 6, 10]
byte[] testArray = {2,1,9,8,3,7,6,10};
Arrays.sort(testArray,2,5);
System.out.println(Arrays.toString(testArray));

3. binarySearch 二分查找

3.1 JDK 文檔

使用二分搜索法來(lái)搜索指定的 byte 型數(shù)組,以獲得指定的值。必須在進(jìn)行此調(diào)用之前對(duì)數(shù)組進(jìn)行排序(通過(guò) sort(byte[]方法)。如果沒(méi)有對(duì)數(shù)組進(jìn)行排序,則結(jié)果是不確定的。如果數(shù)組包含多個(gè)帶有指定值的元素,則無(wú)法保證找到的是哪一個(gè)。

3.2 示例代碼

// 在所有元素中查找
public static int binarySearch(byte[] a,byte key);
// 在 [fromIndex , toIndex) 區(qū)間內(nèi)查找.
public static int binarySearch(byte[] a, int fromIndex,int toIndex,byte key);

4. copyOf 數(shù)組復(fù)制.

4.1 JDK 文檔

復(fù)制指定的數(shù)組,截取或用 0 填充(如有必要),以使副本具有指定的長(zhǎng)度。對(duì)于在原數(shù)組和副本中都有效的所有索引,這兩個(gè)數(shù)組將包含相同的值。對(duì)于在副本中有效而在原數(shù)組無(wú)效的所有索引,副本將包含 (byte)0。當(dāng)且僅當(dāng)指定長(zhǎng)度大于原數(shù)組的長(zhǎng)度時(shí),這些索引存在。

4.2 函數(shù)原型

// 創(chuàng)建新數(shù)組并用原始數(shù)組填充.
public static byte[] copyOf(byte[] original,int newLength);

5. copyOfRange 復(fù)制數(shù)組指定范圍.

5.1 JDK文檔

將指定數(shù)組的指定范圍復(fù)制到一個(gè)新數(shù)組。該范圍的初始索引 (from) 必須位于 0 和 original.length(包括)之間。original[from] 處的值放入副本的初始元素中(除非 from == original.length 或 from == to)。原數(shù)組中后續(xù)元素的值放入副本的后續(xù)元素。該范圍的最后索引 (to) (必須大于等于 from)可以大于 original.length,在這種情況下,false 被放入索引大于等于 original.length - from 的副本的所有元素中。返回?cái)?shù)組的長(zhǎng)度為 to - from。

5.2 函數(shù)原型

// 拷貝指定范圍的數(shù)據(jù).
public static boolean[] copyOfRange(boolean[] original, int from, int to);

6. equals 數(shù)組比較

6.1 JDK文檔

如果兩個(gè)指定的 boolean 型數(shù)組彼此相等,則返回 true。如果兩個(gè)數(shù)組包含相同數(shù)量的元素,并且兩個(gè)數(shù)組中的所有相應(yīng)元素對(duì)都是相等的,則認(rèn)為這兩個(gè)數(shù)組是相等的。換句話(huà)說(shuō),如果兩個(gè)數(shù)組以相同順序包含相同的元素,則兩個(gè)數(shù)組是相等的。此外,如果兩個(gè)數(shù)組引用都為 null,則認(rèn)為它們是相等的。

6.2 函數(shù)原型

public static boolean equals(boolean[] a,boolean[] a2)

7. fill 數(shù)組填充

7.1 JDK 文檔

將指定的 boolean 值分配給指定 boolean 型數(shù)組指定范圍中的每個(gè)元素。填充的范圍從索引 fromIndex(包括)一直到索引 toIndex(不包括)。(如果 fromIndex==toIndex,則填充范圍為空。)

7.2 函數(shù)原型

// 用指定的數(shù)據(jù)填充數(shù)組.
public static void fill(boolean[] a,boolean val)
// 用指定的數(shù)據(jù)填充指定的區(qū)間
public static void fill(boolean[] a,int fromIndex,int toIndex, boolean val);

8. toString 轉(zhuǎn)換字符串.

8.1 JDK 文檔

返回指定數(shù)組內(nèi)容的字符串表示形式。字符串表示形式由數(shù)組的元素列表組成,括在方括號(hào)("[]")中。相鄰元素用字符 ", "(逗號(hào)加空格)分隔。這些元素通過(guò) String.valueOf(double) 轉(zhuǎn)換為字符串。如果 a 為 null,則返回 "null"。

8.2 函數(shù)原型

// 轉(zhuǎn)換成字符串 
public static String toString(double[] a)

8.2 示例代碼

// 輸出結(jié)果 : [2, 1, 9, 8, 3, 7, 6, 10]
byte[] testArray = {2,1,9,8,3,7,6,10};
System.out.println(Arrays.toString(testArray));
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,648評(píng)論 19 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線(xiàn)程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,741評(píng)論 18 399
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂(lè)視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,818評(píng)論 11 349
  • 由于這一個(gè)星期,看房子,定房子,湊首付之類(lèi)的,比較忙。沒(méi)有及時(shí)更新。這篇看房的報(bào)告是8月13號(hào)去看房的。 先講點(diǎn)成...
    9abda844c1aa閱讀 497評(píng)論 0 1

友情鏈接更多精彩內(nèi)容