Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
3年前关闭。
我有一个带有
出:
wG1是片段的符号,
(0,0)是块的x / y坐标。
如果在
除最后一个对象外,所有具有相同
另一个例子:
应该去
我尝试过的事情:
任何帮助深表感谢!
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
3年前关闭。
我有一个带有
tmpOnBoard
对象的ArrayList MoveTo
。 MoveTo
对象由其他两个对象(Position
和Piece
)组成。MoveTo.toString;
出:
MoveTo: wG1 (0,0)
wG1是片段的符号,
(0,0)是块的x / y坐标。
tmpOnBoard
是由侦听器触发的方法制作的,因此它始终在变化。如果在
MoveTo
中有两个或多个tmpOnBoard
对象具有相同的Piece
而另一个Position
,则必须发生。 [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
和Position
的吸气剂我尝试过的事情:
List<Piece> ref = new ArrayList<>();
for (MoveTo moveTo : tmpOnBoard) {
ref.add(moveTo.getPiece());
if (ref.contains(moveTo.getPiece())) {
tmpOnBoard.remove(moveTo);
}
}
任何帮助深表感谢!
最佳答案
建议:不要使用ArrayList来保存MoveTo对象,而应使用LinkedHashMap<Piece, MoveTo>
。将新的MoveTo对象添加到此Map时,请使用MoveTo对象中的相同Key。这将为您提供一个类似列表的结构,该结构保持插入顺序,并且不允许重复的键输入。因此,如果您的地图包含某个部件的条目,并且为同一部件添加了新条目,则旧条目将被丢弃。
警告:请确保您的Piece类具有不错的public boolean equals(Object o)
和public int hashCode()
方法,它们的行为与预期的一样。
10-07 13:23