package newFeatures8;
import java.util.Arrays;
import java.util.List;
public class ArraysDemo {
public static void main(String[] args) {
//arrays_demo();
arrays_asList_demo();
}
/**
* 用于操作數組的工具類,裡面都是靜态方法
*/
public static void arrays_demo(){
int[] arr={1,3,5,7};
System.out.println(arr);//[[email protected] 在堆記憶體中隻有一個對象
//那麼如何像集合那樣,直接就能列印出數組裡的元素呢?可以使用Arrays.toString(arr);
System.out.println(Arrays.toString(arr));//[1, 3, 5, 7]
}
//toString(int[] a)的源代碼實作
/*public static String toString(int[] a) {
if (a == null)
return "null";
int iMax = a.length - 1;
if (iMax == -1)
return "[]";
StringBuilder b = new StringBuilder();
b.append('[');
for (int i = 0; ; i++) {
b.append(a[i]);
if (i == iMax)
return b.append(']').toString();
b.append(", ");
}
}*/
/**
* @description1
* 接下來說到一個Arrays中的一個很常用的方法:</br>
* public static <T> List<T> asList(T... a)</br>
* 傳回一個受指定數組支援的固定大小的清單。(對傳回清單的更改會“直接寫”到數組。)
* 此方法同 Collection.toArray() 一起,充當了基于數組的 API 與基于 collection 的 API 之間的橋梁。
* 傳回的清單是可序列化的,并且實作了 RandomAccess。
* 此方法還提供了一個建立固定長度的清單的便捷方法,該清單被初始化為包含多個元素:
List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");
@description2
把數組變成集合有什麼好處?可以使用集合的思想和方法來操作數組中的元素
for example:判斷數組中是否包含某個元素
*/
public static void arrays_asList_demo(){
String[] strArr={"qq","ww","ee","rr","tt","yy"};
List<String> strList=Arrays.asList(strArr);//傳回一個受指定數組支援的固定大小的清單
System.out.println(strList);//[qq, ww, ee, rr, tt, yy]
/*
* 注意将數組變成集合,不可以使用集合中的增删方法,否則會抛出異常
* 原因是數組的長度是固定的
*/
//strList.add("dd");//會抛出 java.lang.UnsupportedOperationException
/*
* 注意:如果數組中的元素都是對象,那麼變成集合時,數組中的元素直接轉為集合中的元素
* 如果數組中的元素是基本資料類型,那麼會将該數組對象作為集合中的元素存在
*/
int[] arr={1,3,5,7};
List<int[]> intList=Arrays.asList(arr);
System.out.println("改進前:"+intList);//改進前:[[[email protected]]
//改進
Integer[] integers={1,3,5,7};//自動裝箱
List<Integer> integersList=Arrays.asList(integers);
System.out.println("改進後:"+integersList);//改進後:[1, 3, 5, 7]
}
}