How to find index of STRING array in Java from a given value?

JavaArraysStringPosition

Java Problem Overview


I wanted to know if there's a native method in array for Java to get the index of the table for a given value ?

Let's say my table contains these strings :

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

Let's say the user has to enter the type of car and that then in the background the program takes that string and get's it's position in the array.

So if the person enters : Sedan It should take the position 0 and store's it in the object of Cars created by my program ...

Java Solutions


Solution 1 - Java

Type in:

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

Solution 2 - Java

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

After this index is the array index of your car, or -1 if it doesn't exist.

Solution 3 - Java

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

You can do this too:

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

Solution 4 - Java

I had an array of all English words. My array has unique items. But using…

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

…always gave me indexOutOfBoundException.

So, I tried:

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

And, it worked. If your arrays don't have same item twice, you can use:

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

Solution 5 - Java

Use Arrays class to do this

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

Solution 6 - Java

try this instead

org.apache.commons.lang.ArrayUtils.indexOf(array, value);

Solution 7 - Java

No built-in method. But you can implement one easily:

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

Solution 8 - Java

There is no native indexof method in java arrays.You will need to write your own method for this.

Solution 9 - Java

An easy way would be to iterate over the items in the array in a loop.

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

There would definitely be better ways but for small number of items this should be blazing fast. Btw this is javascript but same method should work in almost every programming language.

Solution 10 - Java

Try this Function :

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
      }

Solution 11 - Java

Testable mockable interafce

public interface IArrayUtility<T> {

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

}

implementation

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

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

Solution 12 - Java

Use this as a method with x being any number initially. The string y being passed in by console and v is the array to search!

public static int getIndex(int x, String y, String[]v){
    for(int m = 0; m < v.length; m++){
    	if (v[m].equalsIgnoreCase(y)){
    	    x = m;
        }
    }
    return x;
}

Solution 13 - Java

Refactoring the above methods and showing with the use:

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")

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionCyberflowView Question on Stackoverflow
Solution 1 - Javauser3539787View Answer on Stackoverflow
Solution 2 - JavaAnubian NoobView Answer on Stackoverflow
Solution 3 - Javamohsen kamraniView Answer on Stackoverflow
Solution 4 - JavasuhidView Answer on Stackoverflow
Solution 5 - JavaArjitView Answer on Stackoverflow
Solution 6 - JavaWayneView Answer on Stackoverflow
Solution 7 - JavaRaphael CView Answer on Stackoverflow
Solution 8 - Javaabhishek58gView Answer on Stackoverflow
Solution 9 - JavaR.WView Answer on Stackoverflow
Solution 10 - JavaAlaeddineView Answer on Stackoverflow
Solution 11 - JavaGary DaviesView Answer on Stackoverflow
Solution 12 - Javamitchell WilliamsonView Answer on Stackoverflow
Solution 13 - JavaDouglas RosaView Answer on Stackoverflow