Jac*_*nkr 79 java for-loop arraylist
对于Android应用,我有以下功能
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;
}
Run Code Online (Sandbox Code Playgroud)
这是编写函数获取元素位置的"最佳"方法吗?或者我应该利用java中的一个奇特的shmancy本机函数?
Jon*_*and 180
ArrayList有一个indexOf()方法.检查API以获取更多信息,但以下是它的工作原理:
private ArrayList<String> _categories; // Initialize all this stuff
private int getCategoryPos(String category) {
return _categories.indexOf(category);
}
Run Code Online (Sandbox Code Playgroud)
indexOf() 将快速返回您的方法返回的内容.
Hir*_*tel 15
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);
}
Run Code Online (Sandbox Code Playgroud)
输出:列表索引:7
如果你传递H它将返回7,如果你传递J它将返回-1,因为我们将默认值定义为-1.
完成
如果您List已经排序并具有良好的随机访问权限(如同ArrayList),您应该查看Collections.binarySearch.否则,你应该使用List.indexOf,正如其他人所指出的那样.
但你的算法是合理的,fwiw(除了==其他人指出的).
| 归档时间: |
|
| 查看次数: |
238419 次 |
| 最近记录: |