如何在二维数组中查找重复项?

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]);
}