我有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]
答案 0 :(得分:1)
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);
}
}
}
祝你好运;
答案 1 :(得分:1)
Java 8:
List<String> numbers = new ArrayList<>();
// add numbers...
Collections.sort(numbers, Comparator.comparing(Integer::valueOf));
答案 2 :(得分:0)
看起来您的ArrayList
包含字符串而不是数字。您可以通过将自定义Comparator
传递给sort()
方法按数字顺序对其进行排序。
在java 8中,您可以使用Comparator.comparingInt()
进行实际比较,结合Integer.parseInt()
方法执行从string到int的转换:
ArrayList<String> list = new ArrayList<>();
// ... add values
list.sort(Comparator.comparingInt(Integer::parseInt));
答案 3 :(得分:0)
Java7: Collections.sort()
方法对String和Integer数据类型的工作方式不同。
我假设你有ArrayList<String>
。一种解决方案是将其转换为ArrayList<Integer>
,然后通过Collections.sort()
ArrayList<String> strList = new ArrayList<String>();
strList.add("0");
strList.add("1");
strList.add("11");
strList.add("12");
strList.add("2");
strList.add("02");
strList.add("004");
strList.add("9");
strList.add("20");
System.out.println("strList Unsorted :" + strList);
Collections.sort(strList);
System.out.println("strList Sorted :" + strList);
//Convert ArrayList<String> to ArrayList<Integer>
List<Integer> intList = new ArrayList<Integer>(strList.size());
for (String strValue : strList) {
intList.add(Integer.parseInt(strValue));
}
System.out.println("intList Unsorted :" + intList);
Collections.sort(intList);
System.out.println("intList Sorted :" + intList);