Java - 删除ArrayList中的项目

时间:2016-03-29 19:33:15

标签: java arraylist

我有一个带有tmpOnBoard个对象的ArrayList MoveToMoveTo对象由另外两个对象PositionPiece组成。

MoveTo.toString;

出:

MoveTo: wG1 (0,0)

wG1是一件作品的符号 (0,0)是该片的x / y坐标。

tmpOnBoard是在一个由侦听器触发的方法中生成的,因此它会一直在变化。

如果MoveTo中有两个或多个tmpOnBoard个对象,PiecePosition [MoveTo: bS1 (-1,2), MoveTo: bS1 (2,-2)] ,则会发生什么。

MoveTo

应删除具有相同Piece的所有[MoveTo: bS1 (2,-2)] 个对象,但最后一个除外,因此列表为

 [MoveTo: wB1 (-1,2), MoveTo: bG2 (0,0), ... MoveTo: wB1 (2,-2), MoveTo: wB1 (-7,4)]

另一个例子:

 [MoveTo: bG2 (0,0), ... MoveTo: wB1 (-7,4)]

应该去

MoveTo

Piece对象包含PositionList<Piece> ref = new ArrayList<>(); for (MoveTo moveTo : tmpOnBoard) { ref.add(moveTo.getPiece()); if (ref.contains(moveTo.getPiece())) { tmpOnBoard.remove(moveTo); } }

的getter

我尝试的事情:

{{1}}

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

建议:不要使用ArrayList来保存MoveTo对象,而是使用LinkedHashMap<Piece, MoveTo>。向此Map添加新的MoveTo对象时,请使用MoveTo对象中的相同Key。这将为您提供类似列表的结构,维护插入顺序,并且不允许重复键输入。因此,如果您的地图包含某个部分的条目,并且您为同一部分添加了新条目,则旧条目将被丢弃。

警告:确保您的Piece类具有合适的public boolean equals(Object o)public int hashCode()方法,其行为符合预期。