【发布时间】:2014-03-01 05:47:50
【问题描述】:
我有一个包含这种类型对象的列表
class Element
{
String description;
...
}
这些对象包含在一个列表中。
List<Element> elements = ...
此列表将根据Element 对象的description 属性按升序排序。
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);
}
我的问题是,有没有更快或更有效的方法来做到这一点?
【问题讨论】:
-
您打算如何填充订单?
-
你是说HashMap?手动,在代码中。
-
您的收藏中大概有多少件?如果它是一个小数字,速度很可能并不重要。
-
@MartinCarney,在我的情况下,项目不会超过 30 或 40,但假设还有更多,如何提高效率?
-
听起来您正在尝试进行微优化,这几乎不值得。不过,我可能只是误解了您要完成的工作。
标签: java sorting data-structures