帶你快速搞定java數組
1、數組的定義
- 先聲明后使用
數據類型 [] 數組名稱 = new 數據類型[長度];String[] arr3 = new String[5];
數據類型 數組名稱[] = new 數據類型[長度];String arr[] = new String[5];
- 直接初始化
String[] arrs = {"1","2","3"};
- 聲明并初始化
String[] sarr = new String[]{"a","b"};
2、array 遍歷
- 流遍歷
將數組封裝成流進行操作,所有的操作都和列表一樣操作
public static void main(String[] args) { String[] arrs = {"1","2","3"}; Arrays.stream(arrs).forEach(System.out::println); }
- 普通遍歷
普通遍歷有三種方式,建議使用第一種,
如果需要使用索引可以使用第三種
如果想要倒序,則使用第三種
3、List和array 之間的轉換
list 和 array 之間大有聯系,list 的實現形式有鏈表和 數組,我們開發(fā)中經常需要對兩者進行轉換
1、數組轉list
- 使用循環(huán) 轉換為list
- 借助工具方法
代碼展示:
public static void main(String[] args) { String[] arrs = {"1","2","3"}; // 循環(huán)轉換 List<String> list1 = new ArrayList<>(); for (String arr : arrs) { list1.add(arr); } // 借助數組工具類 List<String> list2 = Arrays.asList(arrs); // 借助集合工具類 List<String> list3 = new ArrayList<>(); Collections.addAll(list2,arrs); }
2、list 轉數組
- list 內置方法 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); } // 調用list 方法 String[] arr2 = (String[]) list.toArray(); }
3、Arrays工具類
- toString()
打印數組的方法,如果不調用這個方法打印的是內存地址
- stream()
將數組轉換為流操作,具體就不演示了
- sort()
對數組進行排序,注意這個排序是數組內部排序,沒有返回值,原數組會被改變
- setAll
對數組內的元素進行操作,需要提供一個function,具有不同的數據類型
String[] arrs = {"1","2","3"}; Arrays.setAll(arrs, e->e+"0"); for (String arr : arrs) { System.out.println(arr); }
- binarySearch
看名字都知道這是二分查找,具體的算法也很簡單,如果你還不會,可以補一下了,如果你懂二分查找應該知道,在調用這個方法之前要保證數組是有序的!
- copyOf
名字也很直白,拷貝數組,擴展就是增加一些長度限制,或者填充數據的設置
- equals
看起來不需要解釋
- deepEquals
判斷兩個數組的深度是否相同,也就是數組嵌套了幾層
- 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); }
認識英語的話基本上都懂,就是如何填充數組,當然你也可以自己進行循環(huán)操作
- hashCode
計算數組的hash code
- parallelPrefix
這個有些意思的,并行的累計操作數組內的元素,看個例子你就知道了
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í)行結果:
4、可能遇到的問題
1、索引越界問題,數組的下標索引是從0 開始的,最后一個索引是length -1 ,注意不要越界
2、下面的方式創(chuàng)建的列表不支持添加
因為Arrays中的ArrayList并沒有實現remove()和add()方法,所以拋出了異常。所以說 Arrays.asList 返回的 List 是一個不可變長度的列表,此列表不再具備原 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、一個小技巧,將數組繞成圈進行遍歷
使用對數組長度取余即可
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++; } }
可以看到多次遍歷了數組
總結
本篇文章就到這里了,希望能給你帶來幫助,也希望你能夠多多關注腳本之家的更多內容!
相關文章
SpringBoot中的maven插件spring-boot-maven-plugin使用
這篇文章主要介紹了SpringBoot中的maven插件spring-boot-maven-plugin使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12Java中parallelStream().forEach()的踩坑日記
本文主要介紹了Java中parallelStream().forEach()的踩坑日記,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-06-06JFileChooser實現對選定文件夾內圖片自動播放和暫停播放實例代碼
這篇文章主要介紹了JFileChooser實現對選定文件夾內圖片自動播放和暫停播放實例代碼,需要的朋友可以參考下2017-04-04mybatis注解動態(tài)sql注入map和list方式(防sql注入攻擊)
這篇文章主要介紹了mybatis注解動態(tài)sql注入map和list方式(防sql注入攻擊),具有很好的參考價值,希望對大家有所幫助。2021-11-11