java:在数组(此处以int数组为例)中查找元素的索引 |
您所在的位置:网站首页 › 数组里面是否有某个元素的值怎么查 › java:在数组(此处以int数组为例)中查找元素的索引 |
1 2 3 Integer[] array = {1,2,3,4,5,6};Arrays.asList(array).indexOf(4); 请注意,此解决方案是线程安全的,因为它创建了类型为List的新对象。 另外,您也不想循环或类似地调用它,因为每次都会创建一个新对象 相关讨论
如果您使用的是番石榴集合,则另一个选择是Ints.indexOf 1 2 3 4 5 6 // Perfect storm: final int needle = 42; final int[] haystack = [1, 2, 3, 42]; // Spoiler alert: index == 3 final int index = Ints.indexOf(haystack, needle); 当空间,时间和代码重用非常宝贵时,这是一个很好的选择。这也很简洁。
看一下API,它说您必须先对数组进行排序 所以: 1 2 Arrays.sort(array);Arrays.binarySearch(array, value); 如果您不想对数组进行排序: 1 2 3 4 5 public int find(double[] array, double value) { for(int i=0; i if(arr[i]==value){ k=i; break; } } return k; } 通过传递两个性能参数Array和value来调用此方法,并将其返回值存储在整数变量中。 1 int indexNum = getArrayIndex(array,value); 谢谢 您可以将其转换为列表,然后使用indexOf方法: 1 Array.asList(array).indexOf(1); http://download.oracle.com/javase/1.5.0/docs/api/java/util/Arrays.html#asList(T ...) http://download.oracle.com/javase/1.5.0/docs/api/java/util/List.html#indexOf(java.lang.Object) 相关讨论
使用二进制搜索之前,需要对值进行排序。否则,手动方法是尝试选项卡中的所有整数。 1 2 3 4 5 6 7 8 public int getIndexOf( int toSearch, int[] tab ) { for( int i=0; i index ) map.put( value, index ); 然后map.get(value)获取索引。 问候, 斯特凡 @pst,感谢您的评论。您可以发布其他替代方法吗? 相关讨论
1 2 3 Integer[] arr = { 0, 1, 1, 2, 3, 5, 8, 13, 21 }; List arrlst = Arrays.asList(arr); System.out.println(arrlst.lastIndexOf(1)); 您可以使用现代Java解决此问题。请使用以下代码: 1 2 3 static int findIndexOf(int V, int[] arr) { return IntStream.range(1, arr.length).filter(i->arr[i]==V).findFirst().getAsInt(); } 简单: 1 2 3 4 5 public int getArrayIndex(int[] arr,int value) { for(int i=0;i Random rnd = new Random(); int randomIntegers[] = new int[20]; double smallest = randomIntegers[0]; int location = 0; for(int i = 0; i public static int Tab[] = {33,44,55,66,7,88,44,11,23,45,32,12,95}; public static int search = 23; public static void main(String[] args) { long stop = 0; long time = 0; long start = 0; start = System.nanoTime(); int index = getIndexOf(search,Tab); stop = System.nanoTime(); time = stop - start; System.out.println("equal to took in nano seconds ="+time); System.out.println("Index of searched value is:"+index); System.out.println("De value of Tab with searched index is:"+Tab[index]); System.out.println("=========================================================="); start = System.nanoTime(); int Bindex = bitSearch(search,Tab); stop = System.nanoTime(); time = stop - start; System.out.println("Binary search took nano seconds ="+time); System.out.println("Index of searched value is:"+Bindex); System.out.println("De value of Tab with searched index is:"+Tab[Bindex]); } public static int getIndexOf( int toSearch, int[] tab ){ int i = 0; while(!(tab[i] == toSearch) ) { i++; } return i; // or return tab[i]; } public static int bitSearch(int toSearch, int[] tab){ int i = 0; for(;(toSearch^tab[i])!=0;i++){ } return i; } } 添加了XOR :) 相关讨论
如果有人还在寻找答案, 您可以使用[Apache Commons Library] [1]中的ArrayUtils.indexOf()。 如果您使用的是Java 8,则还可以使用Strean API: 1 2 3 4 5 6 7 8 9 public static int indexOf(int[] array, int valueToFind) { if (array == null) { return -1; } return IntStream.range(0, array.length) .filter(i -> valueToFind == array[i]) .findFirst() .orElse(-1); } [1]:https://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/ArrayUtils.html#indexOf(int[],%20int) 1 2 3 4 5 6 7 8 9 10 11 12 13 static int[] getIndex(int[] data, int number) { int[] positions = new int[data.length]; if (data.length > 0) { int counter = 0; for(int i =0; i positions[counter] = i; counter++; } } } return positions; } 二进制搜索:二进制搜索还可用于查找数组中数组元素的索引。但是二进制搜索只能在数组排序后使用。 Java为我们提供了一个内置函数,可以在Java的Arrays库中找到该函数,如果存在元素,它将返回索引,否则返回-1。复杂度将为O(log n)。 下面是二进制搜索的实现。 1 2 3 4 public static int findIndex(int arr[], int t) { int index = Arrays.binarySearch(arr, t); return (index ArrayList list = new ArrayList(Arrays.asList(stringArray)); int index = list.indexOf(name); list.clear(); return index; } return -1; } 相关讨论
1 2 3 4 5 6 7 8 Integer[] array = {1, 2, 3, 4, 5, 6}; for (int i = 0; i system.out.println(i); break; } } 相关讨论
转自:https://www.codenong.com/6171663/ |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |