2012-04-02 17 views
24

整数リストを作成し、特定の値のインデックスを返そうとしています。 配列は3,8,2,5,1,4,7,6で、indexOf(3)は0でなければなりません。なぜ、indexOfはオブジェクトを見つけられませんか?

私は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を返しています。どうして?これを期待通りに動かすにはどうすればいいですか?

+0

皆様にお返事ありがとうございます。その変更ではデータ構造を変更する必要がありますが、代わりにint []配列で動作するようにbinarySearchメソッドを使用します。 – rishimaharaj

+2

これは、_sorted_ 'int []'配列に対してのみ機能することに注意してください。あなたが記述する例はそうではありません。 –

+0

@LouisWasserman私はあなたのコメントとupvotesを得ていない。 'indexOf'"このリスト内で指定された要素が最初に出現したときのインデックスを返します。もしこのリストに要素が含まれていなければ-1を返します。 " - なぜそれは任意の配列ではうまくいかないのでしょうか? – arekolek

答えて

20

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' 
30

Arrays.asList(A)は、List<int[]>を返します。これはプリミティブ型ではなくオブジェクトの配列を期待するためです。代わりにint[]

  • インラインの

    • 使用Integer[]配列を、そしてオートボクシングはそれの世話をしましょう;:あなたのオプションがありますArrays.asList(3,8,2,5,1,4,7,9)は、List<Integer>としてプリミティブ配列を表示するために、細かく動作します。
    • 使用Guava'sInts.asList(int...) (開示:私はGuavaに貢献します)
    • GuavaのInts.indexOf(int[], int)を使用してください。これはプリミティブアレイで直接動作します。
  • 1

    このよう

    Integer[] array = {3,8,2,5,1,4,7,9}; 
    List<Integer> list = Arrays.asList(array); 
    
    System.out.println(list.indexOf(8)); 
    

    それを実行してくださいasListは、Tは(INT [])原始することはできませんstatic <T> List<T>を返します。

    関連する問題