【问题标题】:How can I get all the indexes of a Particular String in String Array?如何获取字符串数组中特定字符串的所有索引?
【发布时间】:2016-02-15 06:26:19
【问题描述】:

如何获取字符串数组中特定字符串的所有索引?

例如:

String [] alphabet ={“A”,”B”,”C”,”A”,”E”,”A”,”A” };

如果我正在搜索“A”的索引

所以我想要结果

int array [] ={0,3,5,6}

【问题讨论】:

  • 一个循环和equals ?
  • Arrays.asList(alphabet).indexOf(“A") 但它给了我数组中第一次出现“A”的索引。@Jim Garrison

标签: java arrays string indexing


【解决方案1】:

尝试使用for循环和list这样存储索引:

String [] alphabet ={"A","B","C","A","E","A","A" };
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i=0;i<alphabet.length;i++) {
   if (alphabet[i].equals("A")) {
    list.add(i);
   }
  }
System.out.println(list);
 }

使用列表比数组更好,因为您不需要关心大小。 输出:

  [0, 3, 5, 6]

【讨论】:

  • 他想要 int 数组中的索引,而不是字符串。
  • List list = new ArrayList(); 出现编译器错误
【解决方案2】:

由于我们不知道我们正在搜索的String 会在String[] 中出现多少次,所以我更喜欢使用List 来存储所有indices。您可以尝试以下方法:

String [] alphabet = {"A", "B", "C", "A", "E", "A", "A"};
List<Integer> indices = new ArrayList<Integer>();
String toSearch = "A";
for (int i = 0; i < alphabet.length; i++) {
  if (alphabet[i].equals(toSearch)) {
    indices.add(i);
  }
}
System.out.println(indices); //prints [0, 3, 5, 6]

【讨论】:

    【解决方案3】:

    您可以按照建议循环遍历它,当遇到字符串时只需保存索引(如果需要,您可以使用 ArrayList,因为我们正在动态添加索引)。

    String [] alphabet ={"A","B","C","A","E","A","A" };
    ArrayList<Integer> list = new ArrayList<>();
    for(int i=0 : i<alphabet.length; i++){
        if(alphabet[i].equals("A"){ //substitute "A" for the string you are looking for
            list.add(i);
        } 
    }
    

    唯一需要注意的是,您不能将原始类型“int”用于 ArrayList。

    【讨论】:

      【解决方案4】:

      取并 int array[] 。并使用 for 循环找出您的特定字符串

      int[] array;
      for(int i=0;i<alphabet.lenght;i++)
      {
          if(alphabet[i].equals("A"))
          {
              array[i]=i;
          }
      }
      

      【讨论】:

      • 你会在第一个array[i]=i;得到异常
      • 更不用说即使没有异常也不会起作用。
      【解决方案5】:

      试试这个。

          String [] alphabet ={"A","B","C","A","E","A","A" };
          String search = "A";
          int[] array = IntStream.range(0, alphabet.length)
              .filter(i -> alphabet[i].equals(search))
              .toArray();
          System.out.println(Arrays.toString(array));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-28
        • 1970-01-01
        相关资源
        最近更新 更多