【问题标题】:How to order a list of object by multiple criteria [duplicate]如何按多个条件对对象列表进行排序[重复]
【发布时间】:2015-08-08 14:35:52
【问题描述】:

我需要根据多个条件订购自定义对象列表:

我的对象是这样的:

public class MyJob {
   private Date finish;
   private int  time;
   private int  param1;
   private int  param2;
   private int  param3;
   private int  size;
   //...
}

我需要创建一个算法来根据以下条件对一组作业进行排序:

  1. 在“完成”属性之后作业无法完成
  2. 给定索引i 的工作,i+1 位置的工作必须具有以下模式之一:
    • 属性param1需要比同级作业的param1大或小一且param2param3相等
    • 属性param2需要比同级作业的param2大或小一且param1和param3相等
    • 属性param3需要比同级作业的param3大或小一个,并且param1param2相等。
  3. 两天后,算法可以从param1param2param3中的任意一种开始。
  4. 如果作业的大小大于为方法指定的大小,则必须将其放在列表的末尾。
  5. 可选,算法可以从作为参数传递的param1param2param3 开始。

谁能给我正确的方向来实现这些多重排序算法?

我想编辑某种选择排序,但我无法开始。

【问题讨论】:

  • 看一下被称为djechlin的问题,即使标准不同,它仍然会解释如何根据多个标准进行排序。

标签: java algorithm sorting


【解决方案1】:

编写您自己的自定义Comparator 实现。

【讨论】:

  • 仅仅有一个Comparator 是不够的,你也需要用它来排序。
  • @CaptainMan 这正是他说“定制”的原因
  • @Aify 这在这种情况下没有任何意义,问题需要指定诸如调用Collections.sort(yourList, yourComparator) 之类的内容才能完成。这就是试图通过建造一艘可以去月球的宇宙飞船来解决登月问题和建造一艘可以去月球的宇宙飞船然后把它飞到月球之间的区别。第一个不完整,尽管存在解决它的工具。
  • @CaptainMan 在这种情况下,绰绰有余。通过说自定义,他暗示 OP 必须覆盖并使用比较器。我们刚刚给了他一张地图。无论如何,我们都不必明确指示他如何阅读地图。如果他不能自己阅读文档,我怀疑任何人都可以帮助他。
  • @CaptainMan FWIW 我不会拒绝一个不完整的答案,因为它们对于需要良好提示而不是完整解决方案的读者(OP 或未来访问者)非常有用。如果这是一个更强有力的问题,你可能会写一个更全面的答案,大概会得到更多的赞成或被接受,而不是像我这样的答案(尽管我的答案可能会被接受,如果它很快并且正是需要的)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 2020-06-02
  • 1970-01-01
  • 1970-01-01
  • 2016-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多