使用一些规则对文本进行排序

eme*_*meh 2 java sorting

我有一个arraylist如下

100 AAA 500-1 Lorem Ipsum
100 BBB 500-2 Lorem Ipsum
101 AAA 500-1 Lorem Ipsum
101 AAA 500-2 Lorem Ipsum
100 BBB 500-3 Lorem Ipsum
Run Code Online (Sandbox Code Playgroud)

我希望将其排序为

101 AAA 500-1 Lorem Ipsum
101 AAA 500-2 Lorem Ipsum
100 AAA 500-1 Lorem Ipsum
100 BBB 500-2 Lorem Ipsum
100 BBB 500-3 Lorem Ipsum
Run Code Online (Sandbox Code Playgroud)

首先,按数字(101,100)递减.

第二,用三个字母字母(AAA,BBB)上升.

三,按第三栏上升(500-1,500-2,500-3)

我可以按空格分割每个元素并获得单独的单词和排序.但任何人都可以用任何其他方式或已知算法帮助我吗?如果您需要更多信息,请与我们联系.

先感谢您.

Mar*_*cek 7

创建比较器将解决您的问题.你应该实现这样的事情:

public class MyComparator implements Comparator<MyObject> {    
  public int compare(MyObject o1, MyObject o2) {
    if (o1 == null || o2 == null) {
      throw new NullPointerException();
    }    
    if (o1.getValue1() != o2.getValue1()) {
      return Integer.compare(o1.getValue1(), o2.getValue1());
    }    
    return Integer.compare(o1.getValue2(), o2.getValue2());
  }
}
Run Code Online (Sandbox Code Playgroud)

当然,有更多方法可以解决这个问题,例如,您可以实现自己的排序算法.但是,我认为使用Comparator是正确的" java-way "来解决它.