2016-12-06 10 views
-2

私のシステムには、ユーザがクリックするカラムのヘッダに基づいてテーブルをソートするメソッドがあります。 col1には文字列、col2にはintなどが含まれています。なぜCollection.sortが整数を奇妙に並べるのですか?

CollectionsSort(List list)を実装しました。

ソートされたリスト:[1、1、123、12324、22、3、567、789、975、99、99]

整数oをカラムをソートするためのメソッドを呼び出すときしかし、私はこの結果を得ます

ofcourseの私は、結果として欲しい:

ソートされたリスト:[1、1、3、22、99、99、123、567、789、975、12324]

私はここで何をしないのですか?私はcollections.sortが整数の各文字をソートしなければならないことを理解しています。したがって、123が22の前に来なければならないのは当然ですが、どうすればこの動作を回避できますか?

+2

これらはアルファベット順に並べられていますが、コードを取得できますか? – tsuda7

+7

あなたは 'Strings'を注文していて、' Integers'は注文していません。 – 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); 
    } 
関連する問題