V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cleverczr
V2EX  ›  Java

问下 Java 数组怎么根据元素获取该元素下标?

  •  
  •   cleverczr · 2021-01-31 17:15:06 +08:00 · 3390 次点击
    这是一个创建于 1422 天前的主题,其中的信息可能已经有所发展或是发生改变。

    网上找了很多方法都不行,请教下各位🙏,顺便说明下,谢谢

    21 条回复    2021-02-04 14:11:37 +08:00
    EminemW
        1
    EminemW  
       2021-01-31 17:23:35 +08:00
    遍历一遍啊
    Jacky23333
        2
    Jacky23333  
       2021-01-31 17:27:49 +08:00 via Android
    看来大学数据结构经常逃课啊
    Jooooooooo
        3
    Jooooooooo  
       2021-01-31 17:30:26 +08:00
    遍历数组

    如果相等, 返回当前 index
    RedBeanIce
        4
    RedBeanIce  
       2021-01-31 17:43:36 +08:00
    入门请学习好数据结构
    不行就多看 java ArrayList 源码,
    RedBeanIce
        5
    RedBeanIce  
       2021-01-31 17:53:34 +08:00
    ```java
    public class FindObject {

    public static void main(String[] args) {
    int[] intArr = {3, 4, 5, 6, 7};
    int index = findIndex(intArr, 4);
    System.out.println("index = " + index);
    }

    private static int findIndex(int[] intArr, int value) {
    for (int i = 0; i < intArr.length; i++) {
    if (value == intArr[i]) {
    return i;
    }
    }
    // -1 不存在
    return -1;
    }
    }

    ```
    janus77
        6
    janus77  
       2021-01-31 17:54:30 +08:00   ❤️ 1
    这种能百度到的问题还是少发吧
    xuanbg
        7
    xuanbg  
       2021-01-31 19:12:41 +08:00
    元素都找到了,还要下标有个毛用啊。。。
    AllenHua
        8
    AllenHua  
       2021-01-31 20:29:19 +08:00 via iPhone
    数组中的元素 都是唯一的吗
    Kasumi20
        9
    Kasumi20  
       2021-01-31 21:33:11 +08:00
    二分查找
    Junzhou
        10
    Junzhou  
       2021-01-31 22:03:33 +08:00
    @Kasumi20 二分只针对有序数组
    Lemeng
        11
    Lemeng  
       2021-01-31 22:07:06 +08:00
    根据元素获取下标,不是只有遍历吗,几乎接触的需要都是这样
    oneisall8955
        12
    oneisall8955  
       2021-01-31 22:32:32 +08:00   ❤️ 1
    一叠扑克牌,只能一张一张拿起来看,怎么找到方块 K ?
    debuggerx
        13
    debuggerx  
       2021-01-31 22:48:22 +08:00
    再用一个 Map<Object, Integer>,往数组里塞数据的时候用这个 Map 存下标不就行了,保证找起下标来简单还快[狗头]
    Cowhitewhite
        14
    Cowhitewhite  
       2021-02-01 09:04:12 +08:00
    ................................................................................................................................................................................................................................................................................................................................................................
    zhaokun
        15
    zhaokun  
       2021-02-01 09:32:30 +08:00
    反转为 map,然后取 KEY
    Vkery
        16
    Vkery  
       2021-02-01 10:16:07 +08:00
    @debuggerx
    @zhaokun
    数组中可能存在多个相同的元素 转 Map 不合适
    xuanbg
        17
    xuanbg  
       2021-02-01 10:37:08 +08:00
    @zhaokun 转 map 不要迭代的吗……还不如直接找,运气好第一个就找到了
    zhaokun
        18
    zhaokun  
       2021-02-01 10:41:04 +08:00
    @Vkery 元素相同你还取 KEY,取出来有啥意义?
    koujyungenn
        19
    koujyungenn  
       2021-02-01 13:46:49 +08:00
    老生常谈
    时间换空间:遍历
    空间换时间:<Value,Index>作为 KV 存一个 map

    不过还有没有更好的办法...
    beitayongguo
        20
    beitayongguo  
       2021-02-02 10:08:55 +08:00
    list.stream.filter(e -> Objects.equals(e.value, valueParam)).findFirst()
    Vkery
        21
    Vkery  
       2021-02-04 14:11:37 +08:00
    @zhaokun 别管有什么意义 别人说的数组 list 而不是 set 那就存在这种可能性 写代码的时候就需要考虑到这种可能性
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1848 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 16:16 · PVG 00:16 · LAX 08:16 · JFK 11:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.