Sorting 使用compare()方法实现比较器

Sorting 使用compare()方法实现比较器,sorting,customization,comparator,Sorting,Customization,Comparator,这里我的类名是MyComparator2,但我如何在这里将其用作方法或对象我不确定MyComparator2是否在另一个类名ComparerDemo中定义自定义排序。有谁能帮助我们弄清楚一个类如何在另一个类上使用吗?提前谢谢 import java.util.Comparator; import java.util.TreeSet; public class ComparaterDemo { public static void main(String[] args) { TreeS

这里我的类名是MyComparator2,但我如何在这里将其用作方法或对象我不确定MyComparator2是否在另一个类名ComparerDemo中定义自定义排序。有谁能帮助我们弄清楚一个类如何在另一个类上使用吗?提前谢谢

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

public class ComparaterDemo {

public static void main(String[] args) {
    TreeSet<Integer> treeSetCOllection = new TreeSet<Integer>(new MyComparator2());
    treeSetCOllection.add(900);
    treeSetCOllection.add(10);
    treeSetCOllection.add(40);
    treeSetCOllection.add(100);
    treeSetCOllection.add(350);
    System.out.println(treeSetCOllection);

}
}

class MyComparator2 implements Comparator{
    public int compare(Object obj1, Object obj2){
        Integer objectNumber1 = (Integer)obj1;
        Integer objectNumber2 = (Integer)obj2;
        if(objectNumber1<objectNumber2) return 1;
        else if (objectNumber1>objectNumber2) return -1;
        else return 0;
    }
}

为了使您的类对其他类可见,您需要指定其可见性。我假设您使用的Java中的三种可见性是:

公开的

私人的

保护

它们的定义如下:

Public表示该类对所有类都可见,而不管文件位于何处

私有类是类中的类。例如,如果MyComparator2是在ComparaterDemo类内部定义的,那么ComparaterDemo可以看到它,但其他类无法看到

受保护类的功能与私有类相同,只是子类也可以访问它们。因此,如果MyComparator2是在ComparerDemo和SubComparaterDemo子类ComparaterDemo中定义的,那么SubComparaterDemo可以访问MyComparator2。在本例中,除了ComparaterDemo及其子类之外,没有其他类可以看到它

在您的问题中,MyComparator2默认设置为受保护。如果您将行:class MyComparator2 implements Comparator更改为public class MyComparator2 implements Comparator,您就不会再有问题了


我希望这能回答您的问题

这里发生的事情是,您正在使用指定的比较器构造树集。其工作原理是,对于使用add方法添加的每个元素,它将自动对集合进行排序。请参阅,

谢谢你,Zymus,但只有当我想应用自定义排序,因为我希望我的数据按降序打印,而不是按升序打印时,才需要这样做。这里使用的MyComparator2是实现comparator的默认构造函数;是的,您所做的基本上是:MyComparator2 comparator=新的MyComparator2;TreeSet TreeSet=新的TreeSetCompariator;如果您想按降序访问这些值,只需使用位于的TreeSetdescendingSet即可