帶你快速搞定java數(shù)組
1、數(shù)組的定義
- 先聲明后使用
數(shù)據(jù)類型 [] 數(shù)組名稱 = new 數(shù)據(jù)類型[長度];String[] arr3 = new String[5];
數(shù)據(jù)類型 數(shù)組名稱[] = new 數(shù)據(jù)類型[長度];String arr[] = new String[5];
- 直接初始化
String[] arrs = {"1","2","3"};
- 聲明并初始化
String[] sarr = new String[]{"a","b"};
2、array 遍歷
- 流遍歷
將數(shù)組封裝成流進(jìn)行操作,所有的操作都和列表一樣操作
public static void main(String[] args) {
String[] arrs = {"1","2","3"};
Arrays.stream(arrs).forEach(System.out::println);
}
- 普通遍歷
普通遍歷有三種方式,建議使用第一種,
如果需要使用索引可以使用第三種
如果想要倒序,則使用第三種

3、List和array 之間的轉(zhuǎn)換
list 和 array 之間大有聯(lián)系,list 的實(shí)現(xiàn)形式有鏈表和 數(shù)組,我們開發(fā)中經(jīng)常需要對兩者進(jìn)行轉(zhuǎn)換
1、數(shù)組轉(zhuǎn)list
- 使用循環(huán) 轉(zhuǎn)換為list
- 借助工具方法
代碼展示:
public static void main(String[] args) {
String[] arrs = {"1","2","3"};
// 循環(huán)轉(zhuǎn)換
List<String> list1 = new ArrayList<>();
for (String arr : arrs) {
list1.add(arr);
}
// 借助數(shù)組工具類
List<String> list2 = Arrays.asList(arrs);
// 借助集合工具類
List<String> list3 = new ArrayList<>();
Collections.addAll(list2,arrs);
}
2、list 轉(zhuǎn)數(shù)組
- list 內(nèi)置方法 toArray
- 直接循環(huán)
代碼展示
public static void main(String[] args) {
List<String> list = Arrays.asList("1","2");
String[] arr1 = new String[list.size()];
// 循環(huán)遍歷賦值
for (int i = 0; i < list.size(); i++) {
arr1[i] = list.get(i);
}
// 調(diào)用list 方法
String[] arr2 = (String[]) list.toArray();
}
3、Arrays工具類
- toString()
打印數(shù)組的方法,如果不調(diào)用這個(gè)方法打印的是內(nèi)存地址

- stream()
將數(shù)組轉(zhuǎn)換為流操作,具體就不演示了
- sort()
對數(shù)組進(jìn)行排序,注意這個(gè)排序是數(shù)組內(nèi)部排序,沒有返回值,原數(shù)組會被改變
- setAll
對數(shù)組內(nèi)的元素進(jìn)行操作,需要提供一個(gè)function,具有不同的數(shù)據(jù)類型
String[] arrs = {"1","2","3"};
Arrays.setAll(arrs, e->e+"0");
for (String arr : arrs) {
System.out.println(arr);
}
- binarySearch
看名字都知道這是二分查找,具體的算法也很簡單,如果你還不會,可以補(bǔ)一下了,如果你懂二分查找應(yīng)該知道,在調(diào)用這個(gè)方法之前要保證數(shù)組是有序的!
- copyOf
名字也很直白,拷貝數(shù)組,擴(kuò)展就是增加一些長度限制,或者填充數(shù)據(jù)的設(shè)置
- equals
看起來不需要解釋
- deepEquals
判斷兩個(gè)數(shù)組的深度是否相同,也就是數(shù)組嵌套了幾層
- fill
public static void main(String[] args) {
String[] arrs = {"1","2","3"};
String[][] arr2 = {{"1"},{"2"},{"3"}};
boolean b = Arrays.deepEquals(arr2, arrs);
System.out.println(b);
}
認(rèn)識英語的話基本上都懂,就是如何填充數(shù)組,當(dāng)然你也可以自己進(jìn)行循環(huán)操作
- hashCode
計(jì)算數(shù)組的hash code
- parallelPrefix
這個(gè)有些意思的,并行的累計(jì)操作數(shù)組內(nèi)的元素,看個(gè)例子你就知道了
public static void main(String[] args) {
String[] sarr = new String[]{"a","b","c"};
Arrays.parallelPrefix(sarr, (sum,e1)->e1 + sum);
System.out.println(Arrays.toString(sarr));
}
看下執(zhí)行結(jié)果:

4、可能遇到的問題
1、索引越界問題,數(shù)組的下標(biāo)索引是從0 開始的,最后一個(gè)索引是length -1 ,注意不要越界
2、下面的方式創(chuàng)建的列表不支持添加
因?yàn)锳rrays中的ArrayList并沒有實(shí)現(xiàn)remove()和add()方法,所以拋出了異常。所以說 Arrays.asList 返回的 List 是一個(gè)不可變長度的列表,此列表不再具備原 List 的很多特性,因此慎用 Arrays.asList 方法。
String[] arr = {"1", "2", "3"};
List list = Arrays.asList(arr);
arr[1] = "4";
try {
list.add("5");
} catch (Exception ex) {
ex.printStackTrace();
}
3、一個(gè)小技巧,將數(shù)組繞成圈進(jìn)行遍歷
使用對數(shù)組長度取余即可
public static void main(String[] args) {
String[] arr = {"a", "b", "c"};
int i = 0;
int j = 0;
int length = arr.length;
while (j++ <10){
System.out.println(arr[i%length]);
i++;
}
}
可以看到多次遍歷了數(shù)組

總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望你能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
springboot如何使用@ConfigurationProperties封裝配置文件
springboot如何使用@ConfigurationProperties封裝配置文件的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
巧用FutureTask 線程池輕松解決接口超時(shí)問題
這篇文章主要為大家介紹了使用FutureTask結(jié)合線程池輕松解決接口超時(shí)問題的巧妙用法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
SpringBoot整合Mysql和Redis的詳細(xì)過程
這篇文章主要介紹了SpringBoot整合Mysql和Redis的示例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02
使用Spring Security和JWT實(shí)現(xiàn)安全認(rèn)證機(jī)制
在現(xiàn)代 Web 應(yīng)用中,安全認(rèn)證和授權(quán)是保障數(shù)據(jù)安全和用戶隱私的核心機(jī)制,Spring Security 是 Spring 框架下專為安全設(shè)計(jì)的模塊,具有高度的可配置性和擴(kuò)展性,而 JWT則是當(dāng)前流行的認(rèn)證解決方案,所以本文介紹了如何使用Spring Security和JWT實(shí)現(xiàn)安全認(rèn)證機(jī)制2024-11-11
Java中高效的判斷數(shù)組中某個(gè)元素是否存在詳解
相信大家在操作Java的時(shí)候,經(jīng)常會要檢查一個(gè)數(shù)組(無序)是否包含一個(gè)特定的值?這是一個(gè)在Java中經(jīng)常用到的并且非常有用的操作。同時(shí),這個(gè)問題在Stack Overflow中也是一個(gè)非常熱門的問題。本文將分析幾種常見用法及其時(shí)間成本,有需要的朋友們可以參考借鑒。2016-11-11
java使用common-httpclient包實(shí)現(xiàn)post請求方法示例
這篇文章主要給大家介紹了關(guān)于java使用common-httpclient包實(shí)現(xiàn)post請求的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08
springboot2 jackson實(shí)現(xiàn)動態(tài)返回類字段方式
這篇文章主要介紹了springboot2 jackson實(shí)現(xiàn)動態(tài)返回類字段方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
Java9新特性Java.util.Optional優(yōu)化與增強(qiáng)解析
這篇文章主要為大家介紹了Java9新特性Java.util.Optional優(yōu)化與增強(qiáng)使用說明解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03

