Java - 按字母和数字对数组中的对象进行排序

Java - sorting objects in array alphabetically and numerically

我得到了一组具有名称和编号的对象。我想先按数字(从高到低)对它们进行排序。如果两个或多个对象具有相同的编号,则必须按字母顺序对它们进行排序。我如何在 Java 中执行此操作? (对象具有名称和编号的吸气剂)

示例输入:

Object1 - AAA - 5
Object2 - ABC - 5
Object3 - XAC - 6
Object4 - ZZZ - 3

输出

Object3 - XAC - 6
Object1 - AAA - 5
Object2 - ABC - 5
Object4 - ZZZ - 3

你做了一个自定义比较器。给定:

class Item {
   String id;
   int nr;

   // with associated getters and the like.
}

使用记录或 Lombok's @Value.

将其修饰成完整的 class

然后:

Comparator<Item> comparator =
  Comparator
  .comparingInt(Item::getNr).reversed()
  .thenComparing(Item::getId);

有了这个比较器,您就可以调用排序了。如果你有一个数组:

Item[] items = ...;
Arrays.sort(items, comparator);

如果你有一个列表:

List<Item> list = ...;
list.sort(comparator);

注意:我建议你使用List,数组有点烦人而且级别低。