【发布时间】:2015-06-02 00:07:51
【问题描述】:
我有一个要按升序排序的数组。但是,我想参考布尔数组对它们进行排序。我想按升序对 true 的值进行排序,然后按升序对 false 的值进行排序。
怎么去那里有点卡住了。
这是我目前拥有的:
Object[] arr = new Object[6];
arr[0] = new Object(2);
arr[1] = new Object(5);
arr[2] = new Object(3);
arr[3] = new Object(1);
arr[4] = new Object(6);
arr[5] = new Object(4);
Available[] avalarr = new Available[6];
availarr[0] = new Available (true);
availarr[1] = new Available (false);
availarr[2] = new Available (false);
availarr[3] = new Available (true);
availarr[4] = new Available (true);
availarr[5] = new Available (false);
我需要的输出是:
1 2 6 3 4 5
【问题讨论】:
-
首先,将“newAvailable”和您的对象放在一个要比较的对象中,例如定义一个包含两者实例的新对象。然后,实现一个自定义比较器 (docs.oracle.com/javase/7/docs/api/index.html?java/util/…)。您的“比较”方法应始终首先检查新对象的布尔值——然后是整数值。最后,将 Arrays.sort 与新的单个数组和新的比较器一起使用。
-
...虽然我不确定您所说的“new Object(2);”是什么意思。我假设你有一个类,比如“Thing”,它采用整数构造函数:class Thing { public Thing(int value){ this.value = value; } }。对吗?
-
感谢您的回复,非常感谢。我会测试看看效果如何。是的,你在变量上是正确的
-
你有 2 个数组吗?还是 1 个数组,其中填充了一个具有两个属性(1 个整数和 1 个布尔值)的类?
-
目前我有 2 个数组。