确定集合中是否存在冲突

时间:2012-03-28 21:54:29

标签: java

我有一个包含5个条目的Java HashMap。映射到每个条目的对象包含:

  • 一个x值
  • y值
  • 一个长度
  • 方向(“水平”或“垂直”)

想想用10 x 10板的战舰战舰。每个条目中的x / y坐标对应于板上船舶的左上角,并且长度和方向对应于船舶长度和从该点的方向。

我正试图想办法撕掉5艘船并检查板上是否有任何“重叠的船只”,称为冲突。我无法弄清楚如何做到这一点。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

一种方法是:

1)为您的电路板中的每个电池分配一个数字,1-100(或0-99)。

2)向hashmap中的内容添加一个方法,该方法返回所覆盖的唯一单元ID的List。因此,如果x == 1,y == 1,length == 3,orientation == horizo​​ntal,您将返回表示潜艇所在单元格的三个1-100值。

您可以通过类似 rowNumber*10 + columnNumber来计算第一个唯一ID。您可能需要调整它,具体取决于您是基于0还是1,或者如果您的范围同样基于0或1 ..从那里,如果水平,您只需为每个长度单位添加1。或者,如果您的作品是垂直的,则为每个唯一ID添加10。

3)现在你可以使用一个带有静态方法的碰撞检测器类,它需要两个部分。它可以调用您在步骤2中创建的方法,获取两个列表,如果有任何重叠,您将在两个列表中找到相同的数字。

我不知道这是否是最佳方式,但这是一种方式。