Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何找到与特定值匹配的int数组索引_Java_Arrays_List_Loops - Fatal编程技术网

Java 如何找到与特定值匹配的int数组索引

Java 如何找到与特定值匹配的int数组索引,java,arrays,list,loops,Java,Arrays,List,Loops,我有 因此,我想从myArray中获得23的索引,而不迭代任何循环(for,while…) 我会做一些类似于Arrays.asList(myArray.indexOf(23) 这不适合我。我得到-1作为输出 这是使用String[] 像 那么为什么这不适用于int[] String myArray[]= {"12","23","10","22","10"}; Arrays.asList(myArray).indexOf("23") 这将解决问题 Arrays.asList(myArr

我有

因此,我想从
myArray
中获得23的
索引,而不迭代任何循环(
for
while
…)

我会做一些类似于
Arrays.asList(myArray.indexOf(23)

这不适合我。我得到
-1
作为输出

这是使用
String[]

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

  String myArray[]= {"12","23","10","22","10"}; 
  Arrays.asList(myArray).indexOf("23")
这将解决问题

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

Integer myArray[]= {12,23,10,22,10};
System.out.println(Arrays.asList(myArray).indexOf(23)); 
在第二种情况下,这将起作用,因为
String
是对象


当我们定义
列表
时,我们将其定义为
列表
列表
。因此在
列表中不使用原语。然后
Arrays.asList(myArray.indexOf(“23”)
查找等效对象的索引

我同意Ruchira的观点,并且还想指出问题在于
int
是一个原语,而
String
Integer
是实际对象。(注意,我会将此作为评论发布,但要到50声誉才能发布;)

如果您想将一个基元数组转换为一个装箱基元列表,请利用。获得列表后,如下图所示,使用列表中的API按索引查找对象

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

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


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

“@Ruchira”我同意这一点。那么我们如何将基元类型转换为对象呢?@ankit337您可以使用Apache lang library()执行以下操作
Integer[]newArray=ArrayUtils.toObject(oldArray)
String myArray[]= {"12","23","10","22","10"}; 
Arrays.asList(myArray).indexOf("23");
List<Integer> list = Arrays.asList(ArrayUtils.toObject(myArray));