为什么Collection.sort命令整数奇怪?

时间:2016-12-06 10:20:10

标签: java sorting collections

我的系统中有一个方法,可以根据用户点击的列标题对表进行排序。包含不同数据类型的不同列,即col 1包含字符串,col 2包含int等。

在sortSearchTable方法中,我们实现了Collections.sort(列表列表)。但是,当调用列整数的方法时,我得到了这个结果:

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

当然我希望结果为:

排序清单:[1,1,3,22,99,99,123,567,789,975,12324]

我在这里缺少什么?我理解collections.sort必须对整数中的每个字符进行排序,因此123必须在22之前出现,例如,但我怎么能避免这种行为呢?

1 个答案:

答案 0 :(得分: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);
   }