簡體   English   中英

自定義比較器沒有做足夠的比較

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM