java - 获取所有出现的元素的索引号
问题描述
我想获取元素的索引号,以下代码仅获取第一次出现。
头发的数组内容:
short,
long,
long
我得到什么索引号:1
需要什么索引号:1、2
for(int i = 0; i <= hair.length; i=i+1) {
if(hair[i].equalsIgnoreCase("long")) {
index = i;
break;
}
}
解决方案
您可以使用诸如 a 之类的容器List
来存储每个有效索引,还要注意停止条件应该是i < hair.length
String[] hair = {"short", "long", "long"};
List<Integer> result = new ArrayList<>();
for (int i = 0; i < hair.length; i++) {
if (hair[i].equalsIgnoreCase("long")) {
result.add(i);
}
}
System.out.println(result); // [1, 2]
使用 aint[]
存储有点不同,因为数组大小的有效索引较少,最后以空框结尾(0 值),您需要 aArrays.copyof
截断它
String[] hair = {"short", "long", "long", "short", "long", "long", "short", "long", "long"};
int[] indices = new int[hair.length];
int nb_valid = 0;
for (int i = 0; i < hair.length; i++) {
if (hair[i].equalsIgnoreCase("long")) {
indices[nb_valid++] = i;
}
}
System.out.println(Arrays.toString(indices)); // [1, 2, 4, 5, 7, 8, 0, 0, 0]
indices = Arrays.copyOf(indices, nb_valid); // truncate the array to keep real indices only
System.out.println(Arrays.toString(indices)); // [1, 2, 4, 5, 7, 8]
推荐阅读
- javascript - 利用位掩码遍历 Held-karp 算法中的所有潜在起始位置
- android - 屏幕旋转后如何保留片段的列表视图内容?
- javascript - TypeError: object null is not iterable (cannot read property Symbol(Symbol.iterator))
- linux - 如何摆脱:第 1 行:/backup: 是目录,错误消息?
- django - 如何在 DRF 中实现会话空闲超时
- python - 如何在 Jupyter notebook 中找到特定的代码行?
- drake - 直接搭配时:InputPort::Eval(): required InputPort[0] (geometry_query)
- python - python web scraper中的错误无法正常运行
- javascript - My Balance States Throws Balance.map 不是函数错误?
- react-native - 如何获取图像链接作为输入并使其显示在下面的视图组件中?