java - 如何根据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
}
}
解决方案
如果您的所有字段都遵循相同的模式,那么将它们包装在某个对象中可能是值得的,例如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());
您可以在此处的文档中找到有关比较器的更多信息 。
推荐阅读
- unit-testing - 你如何使用 vscode 启动带有调试功能的 oclif 测试?
- vba - 在 VBA 中按值和按引用传递参数
- android - Flutter,云火存储查询方法,哪里不正常
- javascript - expressJs router.post() 不适用于多个中间件,给出 [object Undefined] 错误
- sql - 基于 SQL(HANA) 中上一行条件的累计和余额
- javascript - Rxjs:行为主体在不调用 next() 的情况下发出值
- windows - robocopy 在创建文件夹时添加隐藏符号
- azure-data-explorer - Kusto / Azure 数据资源管理器中的约束(元信息)
- python - 输入验证有问题/排除最高值/最低值
- python - 基于替换创建字符串组合