話不多說,請看代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
import java.util.Arrays; import java.util.List; /** * * 本類演示了Arrays類中的asList方法 * 通過四個段落來演示,體現(xiàn)出了該方法的相關特性. * * (1) 該方法對于基本數(shù)據(jù)類型的數(shù)組支持并不好,當數(shù)組是基本數(shù)據(jù)類型時不建議使用 * (2) 當使用asList()方法時,數(shù)組就和列表鏈接在一起了. * 當更新其中之一時,另一個將自動獲得更新。 * 注意:僅僅針對對象數(shù)組類型,基本數(shù)據(jù)類型數(shù)組不具備該特性 * (3) asList得到的數(shù)組是的沒有add和remove方法的 * * 閱讀相關:通過查看Arrays類的源碼可以知道,asList返回的List是Array中的實現(xiàn)的 * 內(nèi)部類,而該類并沒有定義add和remove方法.另外,為什么修改其中一個,另一個也自動 * 獲得更新了,因為asList獲得List實際引用的就是數(shù)組 */ public class AsListTest { public static void main(String[] args) { /* 段落一:基本數(shù)據(jù)類型使用asList中的問題 */ /* 說明:雖然在JDK1.6中能夠將基本數(shù)據(jù)類型的數(shù)組轉換成List,但還是有個缺陷 */ int[] a_int = { 1, 2, 3, 4 }; /* 預期輸出應該是1,2,3,4,但實際上輸出的僅僅是一個引用, 這里它把a_int當成了一個元素 */ List a_int_List = Arrays.asList(a_int); foreach(a_int_List); /* 為此我們需要這樣遍歷其中元素 */ foreachForBase(a_int_List); /* 段落二:對象類型的數(shù)組使用asList,是我們預期的 */ Integer[] a_Integer = new Integer[] { 1, 2, 3, 4 }; List a_Integer_List = Arrays.asList(a_Integer); foreach(a_Integer_List); /* 段落三:當更新數(shù)組或者asList之后的List,另一個將自動獲得更新 */ a_Integer_List.set(0, 0); foreach(a_Integer_List); foreach(a_Integer); a_Integer[0] = 5; foreach(a_Integer_List); foreach(a_Integer); /* 段落四:對基本類型數(shù)組,通過asList之后的List修改對應的值后,在運行時會報出異常 * 但是基本類型數(shù)組對應的List是會發(fā)生變化的,這是毫無疑問的 */ /* * a_int_List.set(0, 0); * foreach(a_int_List); foreach(a_int); */ a_int[0] = 5; foreachForBase(a_int_List); foreach(a_int); } /* 打印方法 */ private static void foreach(List list) { for (Object object : list) { System.out.print(object + " " ); } System.out.println(); } private static void foreachForBase(List a_int_List) { int [] _a_int = ( int []) a_int_List.get( 0 ); foreach(_a_int); } private static void foreach( int [] a_int) { for ( int i : a_int) { System.out.print(i + " " ); } System.out.println(); } private static void foreach(Integer[] _a_Integer) { for ( int i : _a_Integer) { System.out.print(i + " " ); } System.out.println(); } } |
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持服務器之家!
原文鏈接:http://blog.csdn.net/cntanghai/article/details/7188296