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));