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