Java 确定集合中是否存在冲突

Java 确定集合中是否存在冲突,java,Java,我有一个JavaHashMap,包含5个条目。映射到每个条目的对象包含: x值 y值 一段 方向(水平或垂直) 想象一下有10 x 10板的战舰游戏。每个条目中的x/y坐标对应于船在板上的左上角,而长度和方向,正如人们所期望的,对应于从该点开始的船的长度和方向 我正试图想出一个办法,把这5艘船拆开,看看船上是否有“重叠的船只”,也就是所谓的冲突。我不知道该怎么做。任何帮助都将不胜感激。一种方法是: 1) 为电路板中的每个单元分配一个数字,1-100(或0-99) 2) 向hashmap中的内

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

  • x值
  • y值
  • 一段
  • 方向(水平或垂直)
想象一下有10 x 10板的战舰游戏。每个条目中的x/y坐标对应于船在板上的左上角,而长度和方向,正如人们所期望的,对应于从该点开始的船的长度和方向

我正试图想出一个办法,把这5艘船拆开,看看船上是否有“重叠的船只”,也就是所谓的冲突。我不知道该怎么做。任何帮助都将不胜感激。

一种方法是:

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

2) 向hashmap中的内容添加一个方法,该方法返回包含的唯一单元格ID的列表。因此,如果x==1,y==1,length==3,orientation==horizontal,您将返回三个1-100的值,它们表示潜艇所在的单元

您可以通过执行类似于
rowNumber*10+columnNumber
的操作来计算第一个唯一id。您可能需要根据您是基于0还是基于1,或者您的范围也是基于0还是基于1来调整它。从这里开始,如果是水平的,您只需为每个长度单位添加1。或者,如果您的作品是垂直的,则为每个唯一id添加10

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


我不知道这是否是最好的方法,但这是一种方法。

如何将它们放入hashmap?这里讨论了类似的问题。注意:条目是一对(键、值)。