我创建了一个整数列表,并尝试返回特定值的索引。 数组是3,8,2,5,1,4,7,6,我想返回indexOf(3),它应该是0。
导入java.util后,我在Eclipse Java Scrapbook中尝试了以下内容。*:
int[] A = {3,8,2,5,1,4,7,9};
Arrays.asList(A).indexOf(3)
我也尝试过:
int[] A = {3,8,2,5,1,4,7,6};
ArrayList<Integer> l = new ArrayList(Arrays.asList(A));
l.indexOf(3)
两者都返回-1。为什么?如何让它按预期工作?
答案 0 :(得分:34)
Arrays.asList(A)
返回List<int[]>
。这是因为它需要一个对象数组,而不是基本类型。您的选择包括:
Integer[]
代替int[]
Arrays.asList(3,8,2,5,1,4,7,9)
可以正常使用Ints.asList(int...)
方法将基元数组视为List<Integer>
。 (披露:我向Guava捐款。)Ints.indexOf(int[], int)
,它直接用于原始数组。答案 1 :(得分:26)
为了使其正常工作,它应该是Integer[]
而不是int[]
。
Integer[] A = {3,8,2,5,1,4,7,9};
final int i = Arrays.asList(A).indexOf(3);
System.out.println("i = " + i); // prints '0'
答案 2 :(得分:2)
这样做
Integer[] array = {3,8,2,5,1,4,7,9};
List<Integer> list = Arrays.asList(array);
System.out.println(list.indexOf(8));
asList返回static <T> List<T>
其中T不能是原始的(int [])。