Java技术问题:如何根据值获取数组中元素的索引?
如何在Java字符串数组中根据元素值获取索引?
嘿,我明白你现在遇到的问题了——Java里普通的String[]数组确实没有自带的indexOf或者getPosition方法,刚接触的时候确实容易懵。下面给你几个实用的解决办法,按需选择就行:
方法1:自己写遍历循环(最灵活可控)
这是最基础也最稳妥的方式,完全不需要依赖其他类,还能自己处理特殊情况(比如元素为null的场景)。写个简单的工具方法就行:
private static int findStringIndex(String[] array, String target) { if (array == null || target == null) { return -1; } for (int i = 0; i < array.length; i++) { // 用equals比较保证内容相等 if (target.equals(array[i])) { return i; } } // 没找到目标元素就返回-1 return -1; }
调用的时候直接传你的数组和目标值:
int abcIndex = findStringIndex(TEST, "abc"); // 会返回0
如果数组里可能存在null元素,记得把判断改成兼容null的版本:
if (target == null ? array[i] == null : target.equals(array[i]))
方法2:借助Arrays.asList()快速实现
Java的Arrays工具类可以把数组转换成一个列表,而列表是自带indexOf方法的,一行代码就能搞定:
import java.util.Arrays; // ... int index = Arrays.asList(TEST).indexOf("abc"); // 返回0,没找到返回-1
不过要注意:这个方法返回的列表是固定大小的,不能增删元素,但用来找索引完全没问题。另外如果是基本类型数组(比如int[]),Arrays.asList()会把整个数组当成一个元素,这时候就不适用了,但你的场景是String[],完全没问题。
方法3:用你提到的ArrayAdapter(如果已经在用适配器)
如果你已经为这个数组创建了ArrayAdapter,那确实可以直接用它的getPosition()方法,比如:
ArrayAdapter<String> adapter = new ArrayAdapter<>(yourContext, android.R.layout.simple_list_item_1, TEST); int index = adapter.getPosition("abc");
但如果只是为了找索引特意去创建ArrayAdapter,就有点小题大做了,前面两种方法更高效。
总结一下:偶尔查找用方法2最简洁;需要自定义逻辑(比如处理null、忽略大小写)用方法1;如果已经在使用适配器,就直接用方法3就行。
内容的提问来源于stack exchange,提问作者Rifat
相关产品推荐
相关产品推荐

