Java數(shù)組的運(yùn)用詳解
一,數(shù)組的含義:
一維數(shù)組:相同數(shù)據(jù)類型的元素的集合。
二位數(shù)組:存放數(shù)組的數(shù)組,也就是說數(shù)組里存的還是數(shù)組的數(shù)據(jù)形式。
二,數(shù)組的創(chuàng)建
一維數(shù)組
1,動(dòng)態(tài)初始化
數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長(zhǎng)度];
例:int[] a = new int[5];
2,靜態(tài)初始化
數(shù)據(jù)類型[] 數(shù)組名 = {數(shù)組0,數(shù)組1,數(shù)組2,數(shù)組3,…};
例:int[] b = new int[]{1,2,3,4,5};
數(shù)據(jù)類型[] 數(shù)組名 = {數(shù)組0,數(shù)組1,數(shù)組2,數(shù)組3,…};
例:int[] c = {1,2,3,4,5}
二位數(shù)組
數(shù)據(jù)類型[][] 數(shù)組名 = {數(shù)組1,數(shù)組2,…};
例:int[][] a = {{3,5},{7,9},{1,2}};
三,數(shù)組遍歷
一維數(shù)組遍歷
int [] arr={1,2,3,4,5}; for(int a = 0; a < arr.length; a++){ System.out.print(arr[a]); }
運(yùn)行結(jié)果:
12345
Arrays工具類中toString靜態(tài)方法遍歷
int [] arr={1,2,3,4,5}; System.out.print(Arrays.toString(arr));
運(yùn)行結(jié)果:
[1, 2, 3, 4, 5]
二維數(shù)組遍歷
int Arr[][]={{5,7,15},{8,4,11},{3,6,13}}; for (int i = 0; i < Arr.length; i++) { for (int j = 0; j < Arr[i].length; j++) { System.out.print(Arr[i][j]+" "); } }
運(yùn)行結(jié)果:
5 7 15 8 4 11 3 6 13
Arrays工具類中deepToString靜態(tài)方法遍歷
int b[][]={{5,7,15},{8,4,11},{3,6,13}}; System.out.println(Arrays.deepToString(b));
運(yùn)行結(jié)果:
[[5, 7, 15], [8, 4, 11], [3, 6, 13]]
四,Arrays.deepToString()與Arrays.toString()的區(qū)別
Arrays.deepToString()主要用于數(shù)組中還有數(shù)組的情況,而Arrays.toString()則相反,對(duì)于Arrays.toString()而言,當(dāng)數(shù)組中有數(shù)組時(shí),不會(huì)打印出數(shù)組中的內(nèi)容,只會(huì)以地址的形式打印出來。
例:
int a[][]={{5,7,15},{8,4,11},{3,6,13}}; System.out.println(Arrays.toString(a)); int b[][]={{1,2,3},{8,4,11},{3,6,13}}; System.out.println(Arrays.deepToString(b));
運(yùn)行結(jié)果:
[[I@da2dbb, [I@176fe71, [I@fb509a]
[[1, 2, 3], [8, 4, 11], [3, 6, 13]]
五,Java中Arrays類的常用方法
Arrays類位于 java.util 包中,主要包含了操作數(shù)組的各種方法。
Arrays.fill(); //填充數(shù)組
int[] a = new int[5];//新建一個(gè)大小為5的數(shù)組 Arrays.fill(a,4);//給所有值賦值4 System.out.println(Arrays.toString(a)); int[] b = new int[5];//新建一個(gè)大小為5的數(shù)組 Arrays.fill(b, 2,4,1);//給第2位(0開始)到第4位(不包括)賦值6 System.out.println(Arrays.toString(b));
運(yùn)行結(jié)果:
[4, 4, 4, 4, 4]
[0, 0, 1, 1, 0]
Arrays.sort(); //數(shù)組排序
1,數(shù)字排序
int[] a = new int[] { 4, 1, 3, -2, 10 }; Arrays.sort(a); System.out.println(Arrays.toString(a));
運(yùn)行結(jié)果:
[-2, 1, 3, 4, 10]
2,字符串排序,先大寫后小寫
String[] a = new String[] { "a", "b", "C" }; Arrays.sort(a); System.out.println(Arrays.toString(a));
運(yùn)行結(jié)果:
[C, a, b]
3,嚴(yán)格按字母表順序排序,也就是忽略大小寫排序 CASE_INSENSITIVE_ORDER
String[] a = new String[] { "a", "b", "C" }; Arrays.sort(a, String.CASE_INSENSITIVE_ORDER); System.out.println(Arrays.toString(a));
運(yùn)行結(jié)果:
[a, b, C]
4,反向排序, Collections.reverseOrder()
String[] a = new String[] { "a", "b", "C" }; Arrays.sort(a, Collections.reverseOrder()); System.out.println(Arrays.toString(a));
運(yùn)行結(jié)果:
[a, b, C]
5,忽略大小寫反向排序 (先忽略大小寫,再反向排序)
String[] a = new String[] { "a", "B", "c","D" }; Arrays.sort(a, String.CASE_INSENSITIVE_ORDER); Collections.reverse(Arrays.asList(a)); System.out.println(Arrays.toString(a));
運(yùn)行結(jié)果:
[D, c, B, a]
6,選擇數(shù)組指定位置進(jìn)行排序
int[] a = {3,2,1,8,6,5,4,7}; Arrays.sort(a,0,3);//給第0位(0開始)到第3位(不包括)排序 System.out.print(Arrays.toString(a));
運(yùn)行結(jié)果:
[1, 2, 3, 8, 6, 5, 4, 7]
Arrays.toString(); //將數(shù)組中的內(nèi)容全部打印出來
int[] a = {3,2,1,5,4}; System.out.println(a);//直接將數(shù)組打印輸出 String str = Arrays.toString(a); // Arrays類的toString()方法能將數(shù)組中的內(nèi)容全部打印出來 System.out.println(str);
運(yùn)行結(jié)果:
[I@da2dbb
[3, 2, 1, 5, 4]
Arrays.equals(); //比較數(shù)組元素是否相等
int[] arr1 = {1,2,3}; int[] arr2 = {1,2,3}; System.out.println(Arrays.equals(arr1,arr2)); System.out.println(arr1.equals(arr2));
運(yùn)行結(jié)果:
true
false
因?yàn)閑quals比較的是兩個(gè)對(duì)象的地址,不是里面的數(shù),而Arrays.equals重寫了equals,所以,這里能比較元素是否相等。
Arrays.copyOf();//復(fù)制數(shù)組
int[] a= {3, 7, 2, 1}; int[] b=Arrays.copyOf(arr6, 4); //指定新數(shù)組的長(zhǎng)度 int[] c=Arrays.copyOfRange(a, 1, 3); //只復(fù)制從索引[1]到索引[3]之間的元素(不包括索引[3]的元素) System.out.println(Arrays.toString(b)); System.out.println(Arrays.toString(c));
運(yùn)行結(jié)果:
[3, 7, 2, 1]
[7, 2]
數(shù)組中是否包含某一個(gè)值
String[] array={"aaa","bbb","ccc","ddd","eee"}; String a="aaa"; String b="fff"; if (Arrays.asList(array).contains(a)) { System.out.println("1"); }else { System.out.println("2"); } if (Arrays.asList(array).contains(b)) { System.out.println("1"); }else { System.out.println("2"); }
運(yùn)行結(jié)果:
1
2
其它方法,詳情見JAVA JDK_API
六,數(shù)組去重
1,利用set的特性去重
int[] arr11 = {1,2,3,4,5,6,7,8,9,0,3,2,4,5,6,7,4,32,2,1,1,4,6,3}; Set<Integer> set2=new HashSet<Integer>(); for (int i = 0; i < arr11.length; i++) { set2.add(arr11[i]); } System.out.println(set2); int[] arr12 = new int[set2.size()]; int j=0; for (Integer i:set2) { arr12[j++]=i; } System.out.println(Arrays.toString(arr12));
運(yùn)行結(jié)果:
[0, 32, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 32, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2,用List集合實(shí)現(xiàn)
int[] str = {5, 6, 6, 6, 8, 8, 7,4}; List<Integer> list = new ArrayList<Integer>(); for (int i=0; i<str.length; i++) { if(!list.contains(str[i])) { list.add(str[i]); } } System.out.println("去除重復(fù)后的list集合"+list);
運(yùn)行結(jié)果:
[5, 6, 8, 7, 4]
3,用hashSet或者TreeSet實(shí)現(xiàn)
Integer[] nums = { 5, 5, 6, 6, 6, 8, 8, 7, 11, 12, 12 }; HashSet hset = new HashSet(Arrays.asList(nums)); //TreeSet<Integer> hset = new TreeSet<Integer>(Arrays.asList(nums)); Iterator i = hset.iterator(); while(i.hasNext()){ System.out.print(i.next()); }
運(yùn)行結(jié)果:
56781112
4,用List和set實(shí)現(xiàn)
int[] nums = { 5, 6, 6, 6, 8, 8, 7 }; List<Integer> numList = new ArrayList<Integer>(); for (int i : nums) numList.add(i); Set<Integer> numSet = new HashSet<Integer>(); numSet.addAll(numList); System.out.println(numSet);
運(yùn)行結(jié)果:
[5, 6, 7, 8]
七,數(shù)組刪除,增加元素
刪除數(shù)組中其中一個(gè)元素
String [] str = {"Java", "C++", "Php", "C#", "Python"};//刪除php List<String> list = new ArrayList<String>(); for (int i=0; i<str.length; i++) { list.add(str[i]); } list.remove(2); //list.remove("Php") String[] newStr = list.toArray(new String[1]); //返回一個(gè)包含所有對(duì)象的指定類型的數(shù)組 System.out.println(Arrays.toString(newStr));
運(yùn)行結(jié)果:
[Java, C++, C#, Python]
在數(shù)組中增加一個(gè)元素
String [] str = {"Java", "C++", "Php", "C#", "Python"};//增加ruby List<String> list = new ArrayList<String>(); for (int i=0; i<str.length; i++) { list.add(str[i]); } list.add(2, "ruby"); String[] newStr = list.toArray(new String[1]); //返回一個(gè)包含所有對(duì)象的指定類型的數(shù)組 System.out.println(Arrays.toString(newStr));
運(yùn)行結(jié)果:
[Java, C++, ruby, Php, C#, Python]
八,數(shù)組與List相互轉(zhuǎn)換
數(shù)組轉(zhuǎn) List ,使用 JDK 中 java.util.Arrays 工具類的 asList 方法
String[] strs = new String[] {"aaa", "bbb", "ccc"}; List<String> list = Arrays.asList(strs); for (String s : list) { System.out.println(s); }
List 轉(zhuǎn)數(shù)組,使用 List 的toArray方法。無參toArray方法返回Object數(shù)組,傳入初始化長(zhǎng)度的數(shù)組對(duì)象,返回該對(duì)象數(shù)組
List<String> list2 = Arrays.asList("aaa", "bbb", "ccc"); String[] array = list2.toArray(new String[list2.size()]); for (String s : array) { System.out.println(s); }
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
java 中設(shè)計(jì)模式(值對(duì)象)的實(shí)例詳解
這篇文章主要介紹了java 中設(shè)計(jì)模式(值對(duì)象)的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09Java編程中的性能優(yōu)化如何實(shí)現(xiàn)
這篇文章主要介紹了Java編程中的性能優(yōu)化如何實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10Java代碼審計(jì)的一些基礎(chǔ)知識(shí)你知道嗎
這篇文章主要介紹了基于Java的代碼審計(jì)功能的基礎(chǔ)知識(shí),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2021-09-09Java和MySQL數(shù)據(jù)庫(kù)中關(guān)于小數(shù)的保存問題詳析
在Java和MySQL中小數(shù)的精度可能會(huì)受到限制,如float類型的小數(shù)只能精確到6-7位,double類型也只能精確到15-16位,這篇文章主要給大家介紹了關(guān)于Java和MySQL數(shù)據(jù)庫(kù)中關(guān)于小數(shù)的保存問題,需要的朋友可以參考下2024-01-01SpringCache 分布式緩存的實(shí)現(xiàn)方法(規(guī)避redis解鎖的問題)
這篇文章主要介紹了SpringCache 分布式緩存的實(shí)現(xiàn)方法(規(guī)避redis解鎖的問題),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11利用?SpringBoot?在?ES?中實(shí)現(xiàn)類似連表查詢功能
這篇文章主要介紹了如何利用?SpringBoot?在?ES?中實(shí)現(xiàn)類似連表的查詢功能,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07老生常談Java?網(wǎng)絡(luò)編程?——?Socket?詳解
這篇文章主要介紹了Java?網(wǎng)絡(luò)編程?——?Socket?相關(guān)知識(shí),本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05eclipse老是自動(dòng)跳到console解決辦法
eclipse啟動(dòng)服務(wù)后,想看一些properties信息或者別的,但老是自動(dòng)跳轉(zhuǎn)到console頁面,本文給大家介紹了解決辦法,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-03-03