个性化阅读
专注于IT技术分析

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

本文概述

我们可以使用以下方法对列表进行排序:

  • 使用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 define
country.sort(String.CASE_INSENSITIVE_ORDER);  //sorts the list in case insensitive order
System.out.println(country1);		
country.sort(Comparator.naturalOrder());	//sorts list in ascending order
System.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)

参量

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 list
for(String str: sList) 
System.out.print(" "+str);
}
}

输出:

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

赞(0)
未经允许不得转载:srcmini » 如何在Java中对列表进行排序

评论 抢沙发

评论前必须登录!