如何查找匹配特定值的int数组的索引

时间:2013-08-12 04:49:07

标签: java arrays list loops

我有

int myArray[]= {12,23,10,22,10}; 

所以我希望从index of 23获取myArray而不迭代任何循环(forwhile ...)。

我会做Arrays.asList(myArray).indexOf(23)

之类的事情

这对我不起作用。我得到-1作为输出。

这适用于String[] 喜欢

  String myArray[]= {"12","23","10","22","10"}; 
  Arrays.asList(myArray).indexOf("23")

那为什么这不适用于int[]? ?

4 个答案:

答案 0 :(得分:12)

Integer myArray[]= {12,23,10,22,10};
System.out.println(Arrays.asList(myArray).indexOf(23)); 

将解决问题

Arrays.asList(myArray).indexOf(23)这个关于对象的搜索因此我们必须使用int的对象类型,因为int是原始类型。

String myArray[]= {"12","23","10","22","10"}; 
Arrays.asList(myArray).indexOf("23");

在第二种情况下,这将起作用,因为String是对象。

当我们定义List时,我们将其定义为List<String>List<Integer>。因此List中不使用原语。然后Arrays.asList(myArray).indexOf("23")找到等效对象的索引。

答案 1 :(得分:4)

我同意Ruchira,并且还想指出问题与int是原始的事实有关,而StringInteger是实际对象。 (注意我会将此作为评论发布,但不能直到50声誉;))

答案 2 :(得分:2)

如果要将基元数组转换为盒装基元列表,请使用Apache Commons。获得列表后,如下所示,使用List中的API按索引查找对象。

List<Integer> list = Arrays.asList(ArrayUtils.toObject(myArray));

答案 3 :(得分:1)

您可以考虑保持数组排序并使用二进制细分来决定索引。在这种情况下,插入和查找都是O(log(n))(而不是分别是O(1)和O(n))。

如果你正在进行大量的查找,你可能想要使用不同的数据结构,例如哈希映射,不仅仅是为了提高性能,还因为它可以更容易编写。