[英]Custom Comparator is not doing enough Comparison
我想根據以下標准對值進行排序:如果 i 和 j 處的值之和為奇數,則只應交換值。 輸出字符串應盡可能按字典序最小。
輸入:1 2 5 3 8 10 32 51 5 8
輸出:1 2 5 3 8 10 32 51 5 8
期望輸出:1 2 5 3 5 10 32 8 8 51
我正在使用這段代碼。 但它沒有給出預期的結果。
Collections.sort(list, new Comparator<Integer>()
{
public int compare(Integer a, Integer b) {
if ((a + b) % 2 != 0)
return a - b;
else
return 0;
}
});
你不能那樣做。 Comparator.compare
的文檔說
最后,實現者必須確保 compare(x, y) == 0 意味着所有 z 的 sgn(compare(x, z)) == sgn(compare(y, z))。
但是當x = 0
, y = 2
, z = 1
時,您的Comparator
不滿足此條件。
0 == 2
0 < 1
2 > 1
這不是您的實施問題,而是您正在嘗試做的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.