[英]how to sort numerical arraylist in ascending order
我有一个使用Collections.sort
排序的ArrayList
。 但是结果看起来像下面这样。 我如何使其升序?
[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]
如果您不将数字类型和字符串类型混合使用, 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);
}
}
}
祝好运;
Java 8:
List<String> numbers = new ArrayList<>();
// add numbers...
Collections.sort(numbers, Comparator.comparing(Integer::valueOf));
看起来您的ArrayList
包含字符串而不是数字。 通过将自定义Comparator
传递给sort()
方法,可以按数字顺序对其进行sort()
。
在Java 8中,可以使用Comparator.comparingInt()
进行实际的比较,并结合Integer.parseInt()
方法执行从字符串到int的转换:
ArrayList<String> list = new ArrayList<>();
// ... add values
list.sort(Comparator.comparingInt(Integer::parseInt));
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.