我有一个包含这种类型的对象的列表
class Element
{
String description;
...
}
这些对象包含在一个列表中。
List<Element> elements = ...
此列表将根据 description
按升序排序Element
的属性(property)对象。
Element 对象只能有标准描述,需要根据指定的顺序进行排序 -
descE
descA
descK
descB
descF
...
为了让这个排序更快,我目前的计划如下 -
使用 Comparator<Element>
,这样我就可以使用Collections.sort(list,comparator)
功能。将标准描述存储在 HashMap 中
HashMap<String, Integer> descriptionOrder = new HashMap<String, Integer>();
descriptionOrder.put("descE", 0);
descriptionOrder.put("descA", 100);
descriptionOrder.put("descK", 200);
descriptionOrder.put("descB", 300);
descriptionOrder.put("descF", 400);
我添加了 100 的缓冲区,以防稍后需要在两个元素之间添加更多描述。
public int compare(Element a, Element b)
{
int valueForA = descriptionOrder.get(a.getDescription());
int valueForB = descriptionOrder.get(b.getDescription());
return (valueForA - valueForB);
}
我的问题是,有没有更快或更有效的方法来做到这一点?
最佳答案
我认为你所拥有的还可以。
但是,您可能需要考虑列表可以保存空值,并且您可能希望在比较方法中处理空值。这样您就可以确定比较如何满足空值。
关于java - 根据对象属性名称的指定顺序快速对对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22105189/