我有一个使用ArrayList
排序的Collections.sort
。
但是结果看起来像下面这样。我如何使其升序?[0, 1, 11, 12, 12, 13, 13, 14, 14, 16, 16, 16, 17, 17, 17, 18, 18, 19, 2, 2, 20, 20, 20, 21, 21, 22, 4, 7, 7, 7, 8, 9, 9, 9, 9, 9]
最佳答案
看起来您的ArrayList
包含字符串而不是数字。通过将自定义Comparator
传递给sort()
方法,可以按数字顺序对其进行排序。
在Java 8中,可以使用Comparator.comparingInt()
进行实际的比较,并结合Integer.parseInt()
方法执行从字符串到int的转换:
ArrayList<String> list = new ArrayList<>();
// ... add values
list.sort(Comparator.comparingInt(Integer::parseInt));