Better way to find index of item in ArrayList?

后端 未结 8 2019
不知归路
不知归路 2020-12-04 11:50

For an Android app, I have the following functionality

private ArrayList _categories; // eg [\"horses\",\"camels\"[,etc]]

private int getCateg         


        
相关标签:
8条回答
  • 2020-12-04 12:17

    There is indeed a fancy shmancy native function in java you should leverage.

    ArrayList has an instance method called

    indexOf(Object o)

    (http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html)

    You would be able to call it on _categories as follows:

    _categories.indexOf("camels")

    I have no experience with programming for Android - but this would work for a standard Java application.

    Good luck.

    0 讨论(0)
  • 2020-12-04 12:27

    ArrayList has a indexOf() method. Check the API for more, but here's how it works:

    private ArrayList<String> _categories; // Initialize all this stuff
    
    private int getCategoryPos(String category) {
      return _categories.indexOf(category);
    }
    

    indexOf() will return exactly what your method returns, fast.

    0 讨论(0)
  • 2020-12-04 12:28

    If your List is sorted and has good random access (as ArrayList does), you should look into Collections.binarySearch. Otherwise, you should use List.indexOf, as others have pointed out.

    But your algorithm is sound, fwiw (other than the == others have pointed out).

    0 讨论(0)
  • 2020-12-04 12:28

    Java API specifies two methods you could use: indexOf(Object obj) and lastIndexOf(Object obj). The first one returns the index of the element if found, -1 otherwise. The second one returns the last index, that would be like searching the list backwards.

    0 讨论(0)
  • 2020-12-04 12:30
    ArrayList<String> alphabetList = new ArrayList<String>();
    alphabetList.add("A"); // 0 index
    alphabetList.add("B"); // 1 index
    alphabetList.add("C"); // 2 index
    alphabetList.add("D"); // 3 index
    alphabetList.add("E"); // 4 index
    alphabetList.add("F"); // 5 index
    alphabetList.add("G"); // 6 index
    alphabetList.add("H"); // 7 index
    alphabetList.add("I"); // 8 index
    
    int position = -1;
    position = alphabetList.indexOf("H");
    if (position == -1) {
        Log.e(TAG, "Object not found in List");
    } else {
        Log.i(TAG, "" + position);
    }
    

    Output: List Index : 7

    If you pass H it will return 7, if you pass J it will return -1 as we defined default value to -1.

    Done

    0 讨论(0)
  • 2020-12-04 12:32

    Use indexOf() method to find first occurrence of the element in the collection.

    0 讨论(0)
提交回复
热议问题