如何从给定值中找到Java中STRING数组的索引?

Cyb*_*low 47 java arrays string position

我想知道Java中是否有一个本机方法来获取给定值的表索引?

假设我的表包含以下字符串:

public static final String[] TYPES = {
        "Sedan",
        "Compact",
        "Roadster",
        "Minivan",
        "SUV",
        "Convertible",
        "Cargo",
        "Others"
    };
Run Code Online (Sandbox Code Playgroud)

假设用户必须输入汽车类型,然后在后台程序获取该字符串并获取它在数组中的位置.

因此,如果该人进入:轿车它应该采取位置0并将其存储在我的程序创建的汽车对象中...

小智 153

输入:

Arrays.asList(TYPES).indexOf("Sedan");
Run Code Online (Sandbox Code Playgroud)

  • 这使用Arrays类将TYPES数组转换为List <String>对象.List类有一个方法(.indexOf),它将返回传入的对象的索引(在本例中为String).如果您不介意从数组中创建List,那就是很好的解决方案.+1 (3认同)
  • 很好,但你应该评论说必须导入 java.util.Arrays (3认同)
  • @GaryDavies如果你关心java中的对象/列表创建,那么你就用错了语言...... (2认同)

Anu*_*oob 28

String carName = // insert code here
int index = -1;
for (int i=0;i<TYPES.length;i++) {
    if (TYPES[i].equals(carName)) {
        index = i;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

在此之后index是您的汽车的数组索引,如果它不存在则为-1.


小智 9

我有一系列所有英文单词.我的阵列有独特的物品.但是使用......

Arrays.asList(TYPES).indexOf(myString);
Run Code Online (Sandbox Code Playgroud)

......总是给我indexOutOfBoundException.

所以,我尝试过:

Arrays.asList(TYPES).lastIndexOf(myString);
Run Code Online (Sandbox Code Playgroud)

而且,它奏效了.如果您的阵列没有两次相同的项目,您可以使用:

Arrays.asList(TYPES).lastIndexOf(myString);
Run Code Online (Sandbox Code Playgroud)


mok*_*mok 8

for (int i = 0; i < Types.length; i++) {
    if(TYPES[i].equals(userString)){
        return i;
    }
}
return -1;//not found
Run Code Online (Sandbox Code Playgroud)

你也可以这样做:

return Arrays.asList(Types).indexOf(userSTring);
Run Code Online (Sandbox Code Playgroud)


Arj*_*jit 7

使用Arrays类来执行此操作

Arrays.sort(TYPES);
int index = Arrays.binarySearch(TYPES, "Sedan");
Run Code Online (Sandbox Code Playgroud)

  • OP想要以原始顺序知道列表中字符串的索引.对它进行排序后,您可能会返回与其原始位置不同的索引. (4认同)

小智 6

试试这个

org.apache.commons.lang.ArrayUtils.indexOf(array, value);
Run Code Online (Sandbox Code Playgroud)


Rap*_*l C 5

没有内置方法。但你可以轻松实现一个:

public static int getIndexOf(String[] strings, String item) {
    for (int i = 0; i < strings.length; i++) {
        if (item.equals(strings[i])) return i;
    }
    return -1;
}
Run Code Online (Sandbox Code Playgroud)