获取字符串数组中单词的位置

时间:2014-08-31 14:11:13

标签: java arrays string

所以我们有一个带有水果名称的字符串数组。假设您想知道数组中“Peach”这个词在哪个位置(以整数形式返回)。你会如何实现这一目标?我试着找到一篇相关的文章,但却找不到。

 fruits = new String[] {"Peach", "Orange", "Banana", "Plum", "Apple", "Strawberry", "Mango", "Kiwi"};

6 个答案:

答案 0 :(得分:5)

您真的需要为您的用例使用数组吗?大多数情况下,使用集合更加舒适:

List<String> fruits = Arrays.asList("Peach", "Orange", "Banana", "Plum", "Apple", "Strawberry", "Mango", "Kiwi");
int i = fruits.indexOf("Apple");

答案 1 :(得分:3)

您可以添加一些NPE检查,但通常是:

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

答案 2 :(得分:2)

所以,首先要做的事情。

变量fruits不是String,它是一个字符串数组。因此,您可以使用for循环搜索&#34; Peach&#34;简单地迭代它。使用String.equals()方法。

public class Test {
    public static void main(String[] args) {
        String[] fruits = new String[] {"Peach", "Orange", "Banana", "Plum", "Apple", "Strawberry", "Mango", "Kiwi"};

        int out = -1;

        for(int i = 0 ; i < fruits.length ; i++) {
            if (fruits[i].equals("Peach")) {
                System.out.println("\"Peach\" was found at index: " + i);
                out = i;
            }
        }   
    }
}

希望这回答问题:)

编辑:看到一些海报如何建议二元搜索解决问题,我想解决二进制搜索算法要求您对列表进行排序的潜在问题。因此,它将更改您最初查找的索引。

答案 3 :(得分:0)

您可以使用collections

尝试此操作
List<String> f = Arrays.asList("Peach", "Orange", "Banana", "Plum", "Apple", "Strawberry", "Mango", "Kiwi");
int i = f.indexOf("Apple");

答案 4 :(得分:0)

只是为了完成可用的选项 您也可以使用搜索算法,例如binary search 通常,如果阵列变大,通常需要这样做。

 Arrays.sort(fruits);
 int position = Arrays.binarySearch(fruits, "Peach");

注意:需要sort(),因为大多数搜索算法仅适用于已排序的数组。

答案 5 :(得分:-1)

虽然maszter显示的解决方案有效,但它是线性搜索,因此不如其他一些搜索方法有效。这些包括二进制搜索等,它们在Java中提供了类java.util.Arrays,语法为:

Arrays.binarySearch(array, word); //A much faster approach

如果需要更高的速度并且搜索是数组的主要用途,我建议使用HashMap或HashSet。