Java:两个列表之间的区别
我公司的猫群应用程序跟踪一群猫。它需要定期与(每个都是一个)进行比较,并通知猫牧马人任何变化。previousOrder
currentOrder
ArrayList<Cat>
每只猫都是唯一的,每个列表中只能出现一次(或根本不出现)。大多数情况下,和 列表具有相同的内容,顺序相同,但可能会发生以下任何一种情况(从更频繁到更不频繁):previousOrder
currentOrder
- 猫的顺序完全混乱
- 猫在列表中分别向上或向下移动
- 新猫咪加入,在车队的特定地点
- 猫离开车队
这对我来说似乎是一个编辑距离问题。理想情况下,我正在寻找一种算法来确定匹配所需的步骤:previousOrder
currentOrder
- 移动到位置
Fluffy
12
- 在位置插入
Snuggles
37
- 删除
Mr. Chubbs
- 等。
该算法还应识别场景 #1,在这种情况下,新订单将完整地传达。
最好的方法是什么?
(这篇文章和那个帖子提出了类似的问题,但它们都在处理排序列表。我的是有序的,但没有分类。
编辑
Levenshtein算法是一个很好的建议,但我担心创建矩阵的时间/空间要求。我的主要目标是尽快确定和传达更改。这比查找添加的内容并按照“这是新猫,这是当前订单”的行发送消息更快。