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

2021-01-31 17:15:06 +08:00
 cleverczr

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

3348 次点击
所在节点    Java
21 条回复
EminemW
2021-01-31 17:23:35 +08:00
遍历一遍啊
Jacky23333
2021-01-31 17:27:49 +08:00
看来大学数据结构经常逃课啊
Jooooooooo
2021-01-31 17:30:26 +08:00
遍历数组

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

不过还有没有更好的办法...
beitayongguo
2021-02-02 10:08:55 +08:00
list.stream.filter(e -> Objects.equals(e.value, valueParam)).findFirst()

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/750014

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX