关于Java中经典n-Queens的实现问题

这是一个家庭作业问题。我正在为Java中的经典
n-Queens
问题编写解决方案。我的程序看起来像这样,但它返回所有合法的女王位置的集合,而不是打印出来。我将女王的位置表示为
int[]
并使用
HashSet<int[]>
返回
Set<int[]>
作为其实现。 (
Set
在这里是合适的,因为放置的顺序并不重要)。 问题是Java数组不会覆盖
hashCode
,并且具有相同值的不同数组实例具有不同的哈希代码。 我可以编写一个包装类
QueensPlacements
,它包含一个数组并用
Arrays.deepHashCode
覆盖
hashCode
,并返回
Set<QueensPlacement>
。然而,它似乎冗长而不雅。任何人都可以建议更好的解决方案?     
已邀请:
存在几个实现
Set
接口的标准类。您可以使用
TreeSet
并提供自己的比较器。     
为什么不
Set<List<Integer>>
?     
  我可以编写一个包装类QueensPlacements,它包含一个数组并用Arrays.deepHashCode覆盖hashCode,并返回Set。然而,它似乎冗长而不雅。 创建自定义类可能不是一个坏主意。听起来你担心你只是简单地创建一个包装类来传递数据,但你确定它没有其他方法可以使它成为解决方案域的一个完整的部分吗?接收展示位置集的代码与它有什么关系?是否存在可以提供放置接收代码的方法的方法?一个很好的toString()方法至少用于调试? *编辑:* 同样考虑到QueensPlacement可以为展示位置之间的一致排序提供一个
Comparator<QueensPlacement>
,这对于概念问题并不是绝对必要的(对计算机来说无关紧要),但可能会使UI更好一些(例如不是如果以相同的顺序显示等效的展示位置,则对用户更好)。     

要回复问题请先登录注册