如何用 Java 对列表排序

在本教程中,我们将学习如何在自然顺序下排列列表,我们还将学习如何使用我们自己的比较器实现程序来排列一个对象列表。Java 列表类似于数组,但列表的长度是动态的,它来自 Java Collection framework。实际上, List是一个界面,而大多数时候我们使用它的实现之一,如 ArrayListLinkedList等。

Java 黑名单

在这里,我们将学习如何在Java中排列一个对象列表。我们可以使用Collections.sort()方法来排列一个列表以自然的上升顺序。列表中的所有元素都必须执行 Comparable接口,否则IllegalArgumentException将被扔掉。让我们看看一个快速的例子来排列一个列表的字符串。

 1package com.journaldev.sort;
 2
 3import java.util.ArrayList;
 4import java.util.Collections;
 5import java.util.List;
 6
 7public class JavaListSort {
 8
 9    /**
10     * This class shows how to sort ArrayList in java
11     * @param args
12     */
13    public static void main(String[] args) {
14        List<String> strList = new ArrayList<String>();
15        strList.add("A");
16        strList.add("C");
17        strList.add("B");
18        strList.add("Z");
19        strList.add("E");
20        //using Collections.sort() to sort ArrayList
21        Collections.sort(strList);
22        for(String str: strList) System.out.print(" "+str);
23    }
24
25}

正如你所看到的,我们正在使用 **Collections.sort()**方法来排序字符串列表。

Java Sort List

Java 对象清单

让我们看看另一个例子,在那里我们将排序自定义对象列表。

 1package com.journaldev.sort;
 2
 3import java.util.ArrayList;
 4import java.util.Collections;
 5import java.util.List;
 6
 7public class JavaSortListObject {
 8
 9    public static void main(String[] args) {
10    	List<Data> dl = new ArrayList<>();
11    	dl.add(new Data(2));
12    	dl.add(new Data(3));
13    	dl.add(new Data(1));
14    	System.out.println("Original List::"+dl);
15    	Collections.sort(dl);
16    	System.out.println("Naturally Sorted List::"+dl);
17
18    }
19
20}
21
22class Data implements Comparable<Data> {
23
24    private int id;
25
26    public Data(int i) {
27    	this.id = i;
28    }
29
30    @Override
31    public int compareTo(Data d) {
32    	return this.id - d.getId();
33    }
34
35    public int getId() {
36    	return id;
37    }
38
39    @Override
40    public String toString() {
41    	return "Data{"+this.id+"}";
42    }
43}

输出:

1Original List::[Data{2}, Data{3}, Data{1}]
2Naturally Sorted List::[Data{1}, Data{2}, Data{3}]

在 Java 中使用 Comparator 排列列表

Collections.sort() 方法过载,我们还可以提供我们自己的 Comparator进行排序规则的实现,因为 Comparator 是一个 功能界面,我们可以使用 lambda 表达式在单行中写出其实现。

1Collections.sort(dl, (d1, d2) -> {
2    return d2.getId() - d1.getId();
3});
4System.out.println("Reverse Sorted List using Comparator::" + dl);

输出:

Java Sort List Objects Comparator

摘要

Collections class sort() 方法用于在 Java 中对列表进行排序,我们可以用自然排序来排序列表,其中列表元素必须执行相似接口。

您可以从我们的 GitHub 存储库中查看更多示例。

引用: API Doc

Published At
Categories with 技术
Tagged with
comments powered by Disqus