如何使我的机器停止添加重复项?

问题描述

我正在实现Hexic游戏。游戏以制作六边形簇为中心,以将其从棋盘上移除。我找到了一种方法来识别属于群集的每个六边形的坐标,以便将它们添加到集合中。其中一些将被识别两次,但是我只希望每个坐标都保存一次,这就是为什么我选择了一个集合。

问题在于,无论如何两次将坐标添加到集合中。

以下是相关代码

实例化集合:

private Set<int[]> clusters = new HashSet<>();

用于标识集群的嵌套循环:

void findClusters() {
        for (int i = 0; i < NOOFCOLUMNS; i++) {
            for (int j = 1; j < NOOFROWS; j++) {
                Color color = hexagons[i][j].color;
                int row = j-i%2; // do not remove,else magic number
                if ((hexagons[i][j-1].color == color)) {
                    if ((i>0)&&(hexagons[i-1][row].color==color)) { addCluster(i,j,-1); }
                    if ((i<9)&&(hexagons[i+1][row].color==color)) { addCluster(i,+1); }
                }
            }
        }
    }

将坐标添加到集合中的功能

void addCluster(int i,int j,int x) {
        clusters.add(new int[] { i,j });
        clusters.add(new int[] { i,j-1 });
        clusters.add(new int[] { i+x,j-i%2 });
    }

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)