首页 > 解决方案 > 获取所有出现的元素的索引号

问题描述

我想获取元素的索引号,以下代码仅获取第一次出现。

头发的数组内容:

short,
long,
long

我得到什么索引号:1

需要什么索引号:1、2


            for(int i = 0; i <= hair.length; i=i+1) {
                if(hair[i].equalsIgnoreCase("long")) {
                    index = i;
                    break;
                }
           }

标签: javaarrays

解决方案


您可以使用诸如 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]

推荐阅读