我有一个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]
发布于 2017-03-31 02:13:15
看起来您的ArrayList包含字符串而不是数字。通过将自定义Comparator传递给sort()方法,可以按数字顺序对其进行排序。
在java 8中,可以使用Comparator.comparingInt()进行实际的比较,并结合Integer.parseInt()方法执行从string到int的转换:
ArrayList<String> list = new ArrayList<>();
// ... add values
list.sort(Comparator.comparingInt(Integer::parseInt));发布于 2017-03-31 03:10:03
Java 8:
List<String> numbers = new ArrayList<>();
// add numbers...
Collections.sort(numbers, Comparator.comparing(Integer::valueOf));发布于 2017-03-31 02:25:46
如果不混合数字和字符串类型,Collections.sort方法可以很好地工作;
下面是一个例子:
import java.util.*;
public class ArrayListOfIntegers {
public static void main(String args[]){
ArrayList<Integer> arraylist = new ArrayList<>();
arraylist.add(12);
arraylist.add(0);
arraylist.add(12);
arraylist.add(1);
arraylist.add(12);
arraylist.add(11);
/* ArrayList before the sorting*/
System.out.println("Before Sorting:");
for(int counter: arraylist){
System.out.println(counter);
}
/* Sorting of arraylist using Collections.sort*/
Collections.sort(arraylist);
/* ArrayList after sorting*/
System.out.println("After Sorting:");
for(int counter: arraylist){
System.out.println(counter);
}
}
}产出:

祝你好运;
https://stackoverflow.com/questions/43131190
复制相似问题