在ArrayList中查找数组的索引

use*_*086 3 java arrays list find indexof

是否有可能在ArrayList中找到数组的索引?

该方法indexOf似乎不起作用.例如,对于给定的大小为2的数组列表,此代码打印"-1"

List<Integer[]> nodes = new ArrayList<Integer[]>();
nodes.add(new Integer[] {1,1});
System.out.println(nodes.indexOf(new Integer[] {1, 1}));
Run Code Online (Sandbox Code Playgroud)

Cra*_*tis 6

equals()原语的Java阵列的实现执行基准相等性检查.意思是,如果引用指向数组的同一实例,则它们仅被视为相等.

您可以编写自己的索引搜索方法,使用Arrays.equals()静态方法,如下所示:

List<Integer[]> nodes = new ArrayList<Integer[]>();
nodes.add(new Integer[] {1,1});
Integer[] lookingFor = new Integer[] {1,1};
int index = -1;
for (int i = 0; i < nodes.size(); i++) {
    Integer[] array = nodes.get(i);
    if (Arrays.equals(lookingFor, array)) {
        index = i;
        break;
    }
}
System.out.println(index); // 0
Run Code Online (Sandbox Code Playgroud)