java - 根据对象属性名称的指定顺序快速对对象进行排序

标签 java sorting data-structures

我有一个包含这种类型的对象的列表

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/

相关文章:

java - 如何更改点击时的标签颜色?

mysql - REGEXP MySQL - 几个组,无论哪个顺序

c - 打印带有编号节点的二叉搜索树

java - 多线程服务器

algorithm - 平衡 BST 的最佳和最差搜索性能是什么?

java - 根据环境变量或属性执行切入点

java - 如何管理不同应用实例的属性文件?

JavaFx tableview 排序真的很慢如何提高 java swing 中的排序速度

c - 归并排序中的垃圾值

algorithm - 在数组中找到一个在线性时间内比任何其他数组大两倍的数字