如何在二维数组中查找重复项?
How to find duplicates inside a 2d array?
我已经尝试了所有发现的方法。我实际上需要调用函数来完成它。到目前为止,唯一产生某种结果的是这段代码,但结果是错误的。请给我一些帮助。
谢谢!
public class pru {
public static void main (String[] args){
String ejnombre[][]=new String[][]{
{"Lu", "Raul", "Maiz"},
{"Dias", "Dick", "Maiz"},
};
for (int i=0; i<ejnombre.length; i++){
for (int j=0; j<ejnombre[i].length; j++){
for(int k=0; k<ejnombre.length; k++){
for(int l=0; l<ejnombre[i].length; l++){
if (ejnombre[i][j].equals(ejnombre[k][l])){
System.out.println(ejnombre[i][j]);
}
}
}
}
}
}
}
您可以使用 HashSet
并仅迭代数组一次,算法复杂度为 O(N)
public static void main(String[] args) {
String ejnombre[][]=new String[][]{
{"Lu", "Raul", "Maiz"},
{"Dias", "Dick", "Maiz"},
};
Set<String> set = new HashSet<>();
for (int i=0; i<ejnombre.length; i++){
for (int j=0; j<ejnombre[i].length; j++){
if (set.contains(ejnombre[i][j])) {
System.out.println(ejnombre[i][j]);
}
else {
set.add(ejnombre[i][j]);
}
}
}
}
这个输出是Maiz
您还检测所有与自身相等的单元格。简单地排除这种情况:
if (ejnombre[i][j].equals(ejnombre[k][l]) && (i != k || j != l)) {
System.out.println(ejnombre[i][j]);
}
我已经尝试了所有发现的方法。我实际上需要调用函数来完成它。到目前为止,唯一产生某种结果的是这段代码,但结果是错误的。请给我一些帮助。
谢谢!
public class pru {
public static void main (String[] args){
String ejnombre[][]=new String[][]{
{"Lu", "Raul", "Maiz"},
{"Dias", "Dick", "Maiz"},
};
for (int i=0; i<ejnombre.length; i++){
for (int j=0; j<ejnombre[i].length; j++){
for(int k=0; k<ejnombre.length; k++){
for(int l=0; l<ejnombre[i].length; l++){
if (ejnombre[i][j].equals(ejnombre[k][l])){
System.out.println(ejnombre[i][j]);
}
}
}
}
}
}
}
您可以使用 HashSet
并仅迭代数组一次,算法复杂度为 O(N)
public static void main(String[] args) {
String ejnombre[][]=new String[][]{
{"Lu", "Raul", "Maiz"},
{"Dias", "Dick", "Maiz"},
};
Set<String> set = new HashSet<>();
for (int i=0; i<ejnombre.length; i++){
for (int j=0; j<ejnombre[i].length; j++){
if (set.contains(ejnombre[i][j])) {
System.out.println(ejnombre[i][j]);
}
else {
set.add(ejnombre[i][j]);
}
}
}
}
这个输出是Maiz
您还检测所有与自身相等的单元格。简单地排除这种情况:
if (ejnombre[i][j].equals(ejnombre[k][l]) && (i != k || j != l)) {
System.out.println(ejnombre[i][j]);
}