Sorting 使用compare()方法实现比较器
这里我的类名是MyComparator2,但我如何在这里将其用作方法或对象我不确定MyComparator2是否在另一个类名ComparerDemo中定义自定义排序。有谁能帮助我们弄清楚一个类如何在另一个类上使用吗?提前谢谢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
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即可