2012-04-27 43 views
9

我有以下的Java代碼,的Java數組列表發行

int a[] = new int[] {20, 30} ; 
List lis = Arrays.asList(a) ; 
System.out.print(lis.contains(20)); 

但是,輸出是假的。任何人都可以幫助我,爲什麼這不是真的?

回答

13

你得到的不是整數列表,而是一列整數數組,即List<int[]>。您無法創建原始類型的集合(如List)。

在你的情況下,lis.contains(20)將創建一個值爲20的Integer對象,並將其與int數組進行比較,這顯然不相等。

嘗試改變所述陣列的類型Integer,它應該工作:

Integer a[] = new Integer[] {20, 30} ; 
List lis = Arrays.asList(a) ; 
System.out.print(lis.contains(20)); 
+0

該死的我打字慢! (+1) – 2012-04-27 16:14:37

+2

可變損耗的陷阱... – Luciano 2012-04-27 16:15:13

+0

非常感謝。有沒有其他方法可以解決這個問題?這樣就可以使用包含和刪除方法來轉換數組了嗎? – Arpssss 2012-04-27 16:16:16

1

靜態方法asList使用作爲參數可變參數:...。只有通過要求<Integer>,您才能阻止其中a是對象的List<Object>

int[] a = new int[] {20, 30} ; 
List<Integer> lis = Arrays.asList(a) ; 
System.out.print(lis.contains(20));