搜索String的String数组

时间:2014-03-01 17:31:34

标签: java arrays

我想要一个像这样的命令:

setstat <statname> <level>

但是,我的'statname是在一个数组中;我需要输出数组编号。 这是我正在使用的代码:


String[] statname = {"att", "def", "str", "hp",
                     "ranged", "pray", "magic", "cooking", 
                     "wc", "fletch", "fish", "fm", 
                     "craft", "smith", "mining", "herb", 
                     "agil", "thieving", "slayer", "farming", "rc"};

int statid = statname.contains(arg[1]);

然而,它不起作用(对我而言)。看作contains(...)String[]数组不兼容。

我不知道使用哪种方法,或者如何处理它。

3 个答案:

答案 0 :(得分:0)

使用Arrays.asList(statname).indexOf(arg[1]);查找项目的索引。

答案 1 :(得分:0)

由于您的数组未订购,此功能将起作用:

public int getFoundIndex(String[] stringArr_toSearch, String str_toFind)
   for(int i = 0; i < stringArr_toSearch.length; i++)  {
      if(stringArr_toSearch[i].equals(str_toFind))  {
         return  i;
      }
   }
   return  -1;
}

调用它
int foundIdx = getFoundIndex(statName, "str");

答案 2 :(得分:0)

这是一个线性搜索的简洁代码,如果找到该元素,则返回数组中元素的索引,否则返回false。

public int search(String[] array, String element)
{
  if(array == null || element == null)
    return -1;

  for(int i = 0; i < array.length; i++)
  {
    if(array[i].equals(element))
      return i;
  }
  return -1;
}

如果您需要花费大量时间搜索元素,使用这种方法:Arrays.asList(statname).indexOf(arg[1);可能会变得昂贵。

如果必须多次搜索statname数组中的元素,您可以对数组进行一次排序,然后进行二进制搜索,以实现更快的查找时间。