如何将数组列表最大值排序为最小值

时间:2015-05-08 07:59:55

标签: java

我需要首先对数组列表进行最大值排序,我已经完成了这个但是如果数组大小超过10则不进行排序

Collections.sort(str_position);
Collections.reverse(str_position);

在排序数组列表[4, 6, 7, 9, 10, 11, 8, 5, 2, 1]之前 排序后的数组列表[9, 8, 7, 6, 5, 4, 2, 11, 10, 1]

3 个答案:

答案 0 :(得分:2)

问题可能是你正在排序字符串。将它们解析为整数/长整数然后排序。

答案 1 :(得分:1)

只需使用Arrays.sort(str_position,Collections.reverseOrder());但str_position应该是整数数组,如果你想将它们排序为整数,否则你按字母顺序排序,这就是为什么1,10和11是一个接一个的。您可以解析所有项目并将其保存在新数组中:

int[] int_position = new int[str_position.length];
for(int i = 0; i < str_position.length; i++){
    int_position[i] = Integer.parseInt(str_position[i]);
}

答案 2 :(得分:0)

根据您的实际需要,解决方案很少。 如果你真的只需要数字,那么使用数字而不是字符串,排序应该有效。

如果你真的需要字符串在这里是相当有趣的alghoritm:Alphanum Algorithm。在那里你可以找到java实现。

编辑: alphanum算法的作用

  

Alphanum算法对包含字母和数字混合的字符串进行排序。给定混合字符和数字的字符串,它按值顺序对数字进行排序,同时按ASCII顺序对非数字进行排序。最终结果是自然排序顺序。

编辑2: Link to java implementation

文档说:

  

使用此课程:
  使用java.util.Collections类中的静态“sort”方法:
  Collections.sort(YOUR_LIST,new AlphanumComparator());