我需要首先对数组列表进行最大值排序,我已经完成了这个但是如果数组大小超过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]
答案 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());