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

时间:2014-04-18 19:24:06

标签: java arrays string position

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

我们说我的桌子包含这些字符串:

public static final String[] TYPES = {
        "Sedan",
        "Compact",
        "Roadster",
        "Minivan",
        "SUV",
        "Convertible",
        "Cargo",
        "Others"
    };

让我们说用户必须输入汽车的类型,然后在后台程序获取该字符串并获取它在阵列中的位置。

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

12 个答案:

答案 0 :(得分:142)

输入:

Arrays.asList(TYPES).indexOf("Sedan");

答案 1 :(得分:26)

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

index是您汽车的数组索引,如果不存在则为-1。

答案 2 :(得分:9)

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

Arrays.asList(TYPES).indexOf(myString);

...总是给我indexOutOfBoundException

所以,我试过了:

Arrays.asList(TYPES).lastIndexOf(myString);

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

Arrays.asList(TYPES).lastIndexOf(myString);

答案 3 :(得分:8)

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

您也可以这样做:

return Arrays.asList(Types).indexOf(userSTring);

答案 4 :(得分:6)

使用Arrays类来执行此操作

Arrays.sort(TYPES);
int index = Arrays.binarySearch(TYPES, "Sedan");

答案 5 :(得分:3)

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

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;
}

答案 6 :(得分:2)

java数组中没有本机indexof方法。您需要为此编写自己的方法。

答案 7 :(得分:1)

尝试此功能:

public int indexOfArray(String input){
     for(int i=0;i<TYPES,length();i++)
       {
         if(TYPES[i].equals(input))
         {
          return i ;
         }
        }
      return -1     // if the text not found the function return -1
      }

答案 8 :(得分:0)

一种简单的方法是循环遍历数组中的项。

for (var i = 0; i < arrayLength; i++) {
 // (string) Compare the given string with myArray[i]
 // if it matches store/save i and exit the loop.
}

肯定会有更好的方法,但对于少量的项目,这应该是快速的。顺便说一下这是javascript,但是同样的方法应该适用于几乎所有的编程语言。

答案 9 :(得分:0)

可测试的可模拟交互

public interface IArrayUtility<T> {

    int find(T[] list, T item);

}

实施

public class ArrayUtility<T> implements IArrayUtility<T> {

    @Override
    public int find(T[] array, T search) {
        if(array == null || array.length == 0 || search == null) {
            return -1;
        }

        int position = 0;

        for(T item : array) {

            if(item.equals(search)) {
                return position;
            } else {
                ++position;
            }
        }

        return -1;
    }

}

测试

@Test
public void testArrayUtilityFindForExistentItemReturnsPosition() {
    // Arrange
    String search = "bus";
    String[] array = {"car", search, "motorbike"};

    // Act
    int position = arrayUtility.find(array, search);

    // Assert
    Assert.assertEquals(position, 1);
}

答案 10 :(得分:0)

将此作为一种方法,x最初是任何数字。 由控制台传入的字符串y和v是要搜索的数组!

<div id="app">
  {{ message }}
</div>
<script>
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})
</script>

答案 11 :(得分:0)

重构上述方法并与用法一起显示:

private String[] languages = {"pt", "en", "es"};
private Integer indexOf(String[] arr, String str){
   for (int i = 0; i < arr.length; i++)
      if(arr[i].equals(str)) return i;
   return -1;
}
indexOf(languages, "en")