2016-12-06 75 views
-2

我在我的系統中有一個方法,它根據用戶點擊的列標題對錶進行排序。不同的列包含不同的數據類型,例如col 1包含字符串,col 2包含int等。爲什麼Collection.sort順序整數奇怪?

在sortSearchTable方法中,我們實現了Collections.sort(List list)。但是,調用鄰整數排序列中的方法,當我得到這樣的結果:

排序的列表:[1,1,123,12324,22,3,567,789,975,99,99]

ofcourse我想要的結果爲:

排序列表:1,1,3,22,99,99,123,567,789,975,12324]

缺少什麼我在這裏?我明白collections.sort必須對整數中的每個字符進行排序,因此123必須在22之前是自然的,例如,但我怎樣才能避免這種行爲?

+2

它們按字​​母順序排列,我們可以得到您的代碼嗎? – tsuda7

+7

您訂購的是「字符串」而不是「整數」。 – Kayaman

+3

如果你提供實際的*代碼*而不是描述,我們可以很容易地告訴你。我強烈懷疑問題在於你在排序字符串而不是整數,但是如果沒有看到代碼,我們無法確定。 –

回答

0

將您的字符串列表轉換爲整數列表並對其進行排序。

確保您的字符串列表包含有效數字或處理運行時轉換錯誤。

//Create a new Integet List 
    List<Integer> iList = new ArrayList<Integer>(); 

    //Your String list 
    List<String> sList = Arrays.asList("1", "567", "1", "99", "123", "22", "12324", "3", "789", "975", "99"); 

    sList.forEach(s->iList.add(Integer.valueOf(s))); 

    Collections.sort(iList); 

    System.out.println("Sorted Integer List"); 
    for (int number : iList) 
    { 
     System.out.println(number); 
    }