整数リストを作成し、特定の値のインデックスを返そうとしています。配列は3,8,2,5,1,4,7,6であり、indexOf(3)を返したいのですが、これは0である必要があります。
私はEclipseで次のことを試しましたJava Java.util。*をインポートした後のスクラップブック:
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を返しています。どうして?これを期待どおりに機能させる方法は?
そのはず 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'
Arrays.asList(A)
は、_List<int[]>
_を返します。これは、プリミティブ型ではなく、オブジェクトの配列を想定しているためです。オプションは次のとおりです。
Integer[]
_の代わりに_int[]
_を使用Arrays.asList(3,8,2,5,1,4,7,9)
は正常に機能しますInts.asList(int...)
メソッドを使用して、プリミティブ配列を_List<Integer>
_として表示します。 (開示:私はグアバに貢献します。)Ints.indexOf(int[], int)
を使用します。これは、プリミティブ配列で直接機能します。このようにしてください
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 [])にすることはできません。