这是一个关于在java中对数字列表进行排序的不同方法的简短教程。
假设我们有一组数字,比如100,200,4,5,79,26。
我们可以使用数组或列表实现(ArrayList 或LinkedList 在java.util 包中用于对数字进行排序。
Java8 如何用stream.sorted()对数字列表进行排序?
这是一个对ArrayList 的数字进行排序的例子
- 自然顺序
- 升序
- 降序
以下是步骤的顺序
- 使用
Arrays.asList方法创建一个内联初始化的ArrayList - 使用stream方法进行迭代并返回stream
sorted再次按自然顺序对流进行排序并返回流- 最后使用collection方法返回集合
对于descending order ,你可以覆盖sorted方法,如下所示
sorted((item1, item2) -> item2.compareTo(item1)
对于ascending order ,你可以覆盖sorted方法,如下所示
sorted((item1, item2) -> item1.compareTo(item2)
下面是一个完整的例子
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
List list = Arrays.asList(100,200,4,5,79,26);
System.out.println("Initial List: "+list);
List sortedList = list.stream().sorted().collect(Collectors.toList());
System.out.println("Sorted Natural List: "+sortedList);
List sortedDescendingList = list.stream().sorted((item1, item2) -> item2.compareTo(item1)).collect(Collectors.toList());
List sortedAscendingList = list.stream().sorted((item1, item2) -> item1.compareTo(item2)).collect(Collectors.toList());
System.out.println("Sorted Ascending List: "+sortedAscendingList);
System.out.println("Sorted Descending List: "+sortedDescendingList);
}
}
Initial List: [100, 200, 4, 5, 79, 26]
Sorted Natural List: [4, 5, 26, 79, 100, 200]
Sorted Ascending List: [4, 5, 26, 79, 100, 200]
Sorted Descending List: [200, 100, 79, 26, 5, 4]
集合排序,以自然和反向顺序对数字进行排序示例
我们使用Sort 方法进行自然排序
- List.sort()方法
- Collections.sort()方法
对于reverse 顺序,你可以使用reverse 方法
- List.reverse()方法
- Collections.reverse()方法
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Test {
public static void main(String[] args) {
Integer[] numbs = new Integer[]{100, 200, 4, 5, 79, 26};
System.out.println("Initial List=" + numbs);
/*For sorting numbers we can use Arrays's sort method*/
Arrays.sort(numbs);
Integer[] numbs1 = new Integer[]{100, 200, 4, 5, 79, 26, 20};
/*For sorting numbers we can also use List's sort method*/
List listNumbers = Arrays.asList(numbs1);
Collections.sort(listNumbers);
System.out.println("Sort List using List sort=" + listNumbers);
Arrays.sort(numbs);
Collections.sort(listNumbers);
System.out.println("List reverse order=" + numbs);
System.out.println("Collections reverse order=" + listNumbers);
}
}
数组可以存储静态的数据项列表,这意味着大小不能增长和固定。
而List则是存储动态数据的列表。
总结
我们已经学会了用java8的流和排序方法对列表中的数字进行排序的不同方法。