java:在数组(此处以int数组为例)中查找元素的索引

您所在的位置:网站首页 数组里面是否有某个元素的值怎么查 java:在数组(此处以int数组为例)中查找元素的索引

java:在数组(此处以int数组为例)中查找元素的索引

2024-07-14 22:45:44| 来源: 网络整理| 查看: 265

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/



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭