【发布时间】:2014-10-31 17:10:32
【问题描述】:
我有一个 X 元素的数组列表。我想结束的情况是,如果某个元素存在,那么它将在列表中占据一定的优先级..例如,如果元素 1 出现在 arraylist 中,那么它将位于位置 0。但是,如果元素 1不存在,则元素 2 应位于位置 0。并非所有元素都会在应用程序的任何一次运行中出现。
当然,这些元素不称为 1,2,3...,而是复杂的字符串名称 - 没有普通的排序会起作用。排序列表的最佳方式是什么?有没有办法使用“理想排序列表”的模板?
为了让事情更清楚,让我们假设我的“理想”排序(如果所有可能的先例元素都存在的话)是:
狗 猫 兔子
但是要排序的数组列表是:
马 兔子 猫 猪
给出我想要从此特定应用运行中获得的顺序:
猫 兔子 马 猪
没有优先级的元素应该以任何顺序出现。
【问题讨论】:
-
在您的列表中添加一个额外的整数字段优先级,并根据该优先级值进行排序。您可以为此使用 hashMap。
-
非常感谢 - 我的最终解决方案是您的答案和 chiastic-security 的结合。我添加了一个包含键/值对的哈希图,其中键是字符串,值是优先级。然后我为每个对象(猫、马、狗等)添加了一个优先属性,并将优先映射传递给每个对象。如果对象的名称出现在哈希图中,那么我将密钥对的值复制到对象的优先级属性中。最后,我使用比较器按优先级对对象数组列表进行排序。
-
很高兴知道您成功了。您能否为未来的访客发布您的答案。这将对社区有很大帮助。谢谢。