我一直在尝试实现 Comparator
应该根据位置权重对列表进行排序的类。我将解释我应该完成什么。
假设我有一个 ArrayList<T>
。该数组列表始终具有固定大小,用null
填充其他槽。值。
//fixed size = 3
T myObj1, myObj2;
[myObj1, null, myObj2];
在此示例中,myObj2 < myObj1
,因为它存储在位置值小于第一个位置的槽中。
排序比较器应给出以下输出:
//fixed size = 3
T myObj1, myObj2;
[myObj1, myObj2, null];
其他示例:
//fixed size = 7;
T myObj1, myObj2, myObj3, myObj4;
INPUT = [myObj1, null, null, myObj4, myObj3, myObj2, null];
RESULT = [myObj1, myObj4, myObj3, myObj2, null, null, null];
我考虑过使用Comparator<T>
(T是一个具体的类,实际上不需要是通用的);有没有办法复制这种行为?
最佳答案
您始终可以在比较器中使 null 返回 > 0
if (one == null && two == null) {
return 0;
} else if (two == null) {
return -1;
} if (one == null) {
return 1;
} else {
//Compare logic...
}
这表示空值比非空值“更大”
关于java - 空列表的加权顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60060439/