java的有序集合能否自定義排序規(guī)則

小樊
81
2024-09-21 10:34:45

是的,Java的有序集合(如TreeSet)允許你自定義排序規(guī)則。你可以通過實(shí)現(xiàn)Comparator接口并重寫compare方法來實(shí)現(xiàn)自定義排序規(guī)則。然后,將自定義的Comparator對(duì)象傳遞給TreeSet的構(gòu)造函數(shù)。

以下是一個(gè)使用自定義排序規(guī)則的示例:

import java.util.Comparator;
import java.util.TreeSet;

public class CustomSortedSet {
    public static void main(String[] args) {
        // 創(chuàng)建一個(gè)自定義比較器,用于按絕對(duì)值從小到大排序整數(shù)
        Comparator<Integer> customComparator = new Comparator<Integer>() {
            @Override
            public int compare(Integer num1, Integer num2) {
                return Math.abs(num1) - Math.abs(num2);
            }
        };

        // 使用自定義比較器創(chuàng)建一個(gè)TreeSet
        TreeSet<Integer> sortedSet = new TreeSet<>(customComparator);

        // 向TreeSet中添加元素
        sortedSet.add(-5);
        sortedSet.add(3);
        sortedSet.add(-2);
        sortedSet.add(0);
        sortedSet.add(4);

        // 輸出排序后的集合
        System.out.println("Sorted set: " + sortedSet);
    }
}

輸出結(jié)果:

Sorted set: [0, -2, 3, -5, 4]

在這個(gè)示例中,我們創(chuàng)建了一個(gè)自定義比較器,用于按絕對(duì)值從小到大排序整數(shù)。然后,我們使用這個(gè)自定義比較器創(chuàng)建了一個(gè)TreeSet,并向其中添加了一些整數(shù)。最后,我們輸出排序后的集合。

0