首页 > 解决方案 > 如何根据Java中的特定元素对多维对象数组进行排序

问题描述

我正在构建一个多维对象数组,我想按子数组中的特定元素对其进行排序。

我尝试了 Collections.sort 和 bubbleSort,但它们没有用。

Object[][] fields = {{
      "sam", "mccarty",
      "m", "1988/06/01", 5.0, true
   },
   {
      "tom", "huges",
      "m", "1988/06/01", 7.0, true
   },
   {
      "jim", "ross",
      "m", "1988/06/01", 6.5, true
   }
};

我希望数组按子元素 [4] 排序,所以:

 {
   {
      "tom", "huges",
      "m", "1988/06/01", 7.0, true
   },
   {
      "jim", "ross",
      "m", "1988/06/01", 6.0, true
   },
   {
      "sam", "mccartney",
      "m", "1988/06/01", 5.5, true
   }
}

标签: javasorting

解决方案


如果您的所有字段都遵循相同的模式,那么将它们包装在某个对象中可能是值得的,例如Person,这样您就有一个一维数组,然后使用自定义比较器对所述数组进行排序。

你可以这样做:

Person[] fields = {
    new Person("sam", "mccarty", "m", "1988/06/01", 5.0, true),
    ...
};
// Assuming you want things to be sorted in descending order like in your example.
Collections.sort((o1, o2) -> o2.getFourth() - o1.getFourth());

您可以在此处的文档中找到有关比较器的更多信息 。


推荐阅读