在ArrayList中查找项目索引的更好方法?

2022-08-31 10:49:39

对于安卓应用,我有以下功能

private ArrayList<String> _categories; // eg ["horses","camels"[,etc]]

private int getCategoryPos(String category) {
    for(int i = 0; i < this._categories.size(); ++i) {
        if(this._categories.get(i) == category) return i;
    }

    return -1;
}

这是编写函数以获取元素位置的“最佳”方法吗?或者Java中是否有一个我应该利用的花哨的shmancy原生函数?


答案 1

ArrayList具有 indexOf() 方法。请查看 API 了解更多信息,但以下是其工作原理:

private ArrayList<String> _categories; // Initialize all this stuff

private int getCategoryPos(String category) {
  return _categories.indexOf(category);
}

indexOf()将快速返回您的方法返回的确切内容。


答案 2
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);
}

输出:列表索引 : 7

如果传递 H,它将返回 7,如果传递 J,它将返回 -1,因为我们将默认值定义为 -1。