Java 在二维数组中查找项的索引

Java 在二维数组中查找项的索引,java,oop,Java,Oop,经过一些研究,我发现了如何在2D数组中查找项的索引。但是,我只需要一个值,行号,如果您要查找的项目出现了不止一次怎么办? 您将如何存储所有这些时间的行号 for(int j = 0; j < size; j++) { if (arr[i][j] == 88) { return i; // The value i wanna store break; } } for(int j=0;j

经过一些研究,我发现了如何在2D数组中查找项的索引。但是,我只需要一个值,行号,如果您要查找的项目出现了不止一次怎么办? 您将如何存储所有这些时间的行号

for(int j = 0; j < size; j++)
{
    if (arr[i][j] == 88)
    {
        return i; // The value i wanna store
        break;
    }
 }
for(int j=0;j
如果数字88多次出现,我如何存储所有不同的位置并在以后检索它

我只需要一个值,行号 但是,如果88多次出现,我如何存储所有不同的 位置,然后检索它

考虑到您不知道要查找的值可能有多少个副本,我建议使用ArrayList来存储索引

在循环之前创建此项:

List<Integer> indexList = new ArrayList<>();
如果方法需要返回数据,则可以返回ArrayList:

return indexList; // after the loops have finished processing

但是,如果方法返回类型为
void
,则可以忽略
返回索引列表

您可以在
列表中存储所需的值

List<Integer> rows = new ArrayList<>();
for (int i = 0; i < size; i++) {
    for (int j = 0; j < size; j++) {
        if (arr[i][j] == 88) {
            rows.Add(i); // The value i wanna store
            break; // exit inner loop and continue with next row
        }
    }
}
List rows=new ArrayList();
对于(int i=0;i
使用arrayList存储找到的值,因为您不知道长度,因此使用数组并不是最好的情况。这取决于您是否真正关心所有事件,还是只关心一个事件。如果您关心所有事件,可以使用数组列表来存储索引。不要使用break语句。它将继续这一进程loop@Dakoda考虑到返回的值,将永远不会达到中断。他/她不想要该值,他们想要它出现在
valuesList.add(arr[i][j])中的行索引
只会在列表中添加88个,您应该修改它来存储
i
j
,或者有两个列表,每个列表一个,或者有一个自定义类类型的列表,其对象可以容纳一对
i
j
@nits.kk我误解了OP的要求,似乎他/她只想要行索引,因此,我更新了我的答案以适应它。更好的是,像Ousmane所展示的那样,让它成为一个强类型的整数列表。我会用这个更新我的答案。
List<Integer> rows = new ArrayList<>();
for (int i = 0; i < size; i++) {
    for (int j = 0; j < size; j++) {
        if (arr[i][j] == 88) {
            rows.Add(i); // The value i wanna store
            break; // exit inner loop and continue with next row
        }
    }
}