如何在Java中对列表进行排序

本文概述

  • Java Stream接口
  • Java Stream.sorted(比较器比较器)
  • Java Comparator.reverseOrder()方法
  • Java Comparator.naturalOrder()
  • Java Collections.reverseOrder()方法
  • Java Collections.sort()方法
我们可以使用以下方法对列表进行排序:
  • 使用stream.sorted()方法
  • 使用Comparator.reverseOrder()方法
  • 使用Comparator.naturalOrder()方法
  • 使用Collections.reverseOrder()方法
  • 使用Collections.sort()方法
Java Stream接口 Java Stream接口提供了两种对列表进行排序的方法:
sorted()方法
流接口提供了sorted()方法来对列表进行排序。它在java.util包中存在的Stream接口中定义。它返回根据自然顺序排序的流。如果元素不可比较, 则抛出java.lang.ClassCastException。该方法的签名是:
Stream< T> sorted()

参数
T:这是一种流元素。
Java Stream.sorted(比较器比较器) 它还返回根据提供的比较器排序的流。它对于有序流是稳定的。该方法的签名是:
Stream< T> sorted(Comparator< ? Super T> comparator)

参量
  • T是流元素的类型。
  • 用于比较元素的比较器

在以下示例中, 我们使用了以下方法:
  • 在Java 8中, stream()是用于处理对象集合的API。
  • collect()方法用于从流中接收元素并将其存储在集合中。
  • toList()返回收集器, 该收集器将所有输入元素按遇到顺序收集到一个列表中。

import java.util.*; import java.util.stream.*; public class SortListExample1{public static void main(String[] args) {//returns a list view List< String> slist = Arrays.asList("Tanu", "Kamal", "Suman", "Lucky", "Bunty", "Amit"); List< String> sortedList = slist.stream().sorted().collect(Collectors.toList()); sortedList.forEach(System.out::println); }}

输出:
如何在Java中对列表进行排序

文章图片
Java Comparator.reverseOrder()方法 reverseOrder()是在java.util包中定义的Comparator接口的方法。该方法返回一个强加自然顺序相反的比较器。比较null时, 它将引发NullPointerException。方法签名为:
static < T extends Comparable< ? T> > Comparator< T> reverseOrder()

同样也是一个属于java.lang包的接口。
参量
T:要比较的元素的可比较类型。

import java.util.*; import java.util.stream.Collectors; public class SortListExample2{public static void main(String[] args){//returns a list view List< String> slist = Arrays.asList("78", "a", "m", "b", "z", "c", "12", "l", "1"); List< String> sortedList=slist.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList()); sortedList.forEach(System.out::println); }}

输出:
如何在Java中对列表进行排序

文章图片
Java Comparator.naturalOrder() 该方法返回一个比较器, 该比较器以自然顺序比较Comparable对象。返回的可比对象是可序列化的。当我们比较null时, 它将引发NullPointerException。它来自Java8。该方法的签名为:
Static < T extends Comparable < ? super T> > Comparator< T> naturalOrder()

  • 该方法以自然顺序(升序)对元素进行排序。
  • 如果有的话, 它将放在顶部。
  • 如果列表中同时包含小写和大写字母, 则将大写字母元素按自然顺序放在第一位, 然后按小写字母排列。
参量
T:要比较的元素的可比较类型。

import java.util.*; public class SortListExample3{public static void main(String[] args) {List< String> country = Arrays.asList("Russia", "India", "China", "Japan", "", "Ghana"); List< String> country1 = Arrays.asList("Russia", "india", "China", "Japan", "", "ghana"); System.out.println(country); //prints the same list as we definecountry.sort(String.CASE_INSENSITIVE_ORDER); //sorts the list in case insensitive orderSystem.out.println(country1); country.sort(Comparator.naturalOrder()); //sorts list in ascending orderSystem.out.println(country); //sorts list in ascending order (null, capital letter and small letter)country1.sort(Comparator.naturalOrder()); System.out.println(country1); }}

输出:
如何在Java中对列表进行排序

文章图片
Java Collections.reverseOrder()方法 它是属于Java.lang包的Java Collections类的方法。它返回一个强加自然顺序相反的比较器。该方法的签名是:
public static < T> Comparator< T> reverseOrder()

参量
比较器比较的对象的类别。

import java.util.Arrays; import java.util.Collections; import java.util.List; public class SortListExample4{public static void main(String args[]) {List< Integer> list = Arrays.asList(10, 1, -20, 40, 5, -23, 0); Collections.sort(list, Collections.reverseOrder()); System.out.println(list); }}

输出:
如何在Java中对列表进行排序

文章图片
Java Collections.sort()方法 Collections类有两种对列表进行排序的方法:
sort()方法
sort()方法根据元素的自然顺序对列表进行升序排序。该方法的签名是:
public static < T extends Comparable< ? Super T> > void sort() (List< T> list)

【如何在Java中对列表进行排序】参量
T:这是一个类型参数。
list:要排序的列表。
让我们看看Collections.sorts()方法的另一个示例。

import java.util.*; public class SortListExample5{public static void main(String[] args) {List< String> sList = new ArrayList< String> (); sList.add("m"); sList.add("k"); sList.add("a"); sList.add("p"); sList.add("d"); Collections.sort(sList); //sorts array listfor(String str: sList) System.out.print(" "+str); }}

输出:
如何在Java中对列表进行排序

文章图片

    推荐阅读