2016-12-06 74 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); 
    }