这里我的类名是MyComparator2但是我怎么能在这里用它作为方法或对象(我不确定)MyComparator2()在另一个类名ComparaterDemo中来定义自定义排序。任何人都可以帮助明确一个类如何在另一个类上使用吗?提前感谢
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;
}
}
答案 0 :(得分:0)
为了使您的类对其他类可见,您需要指定其可见性。 Java中的三种可见性(我假设你正在使用的是):
公开强>
<强>私有强>
<强>保护强>
它们的定义如下:
公开表示该类对所有类都可见,无论文件位于何处。
私有类是类内的类。例如,如果MyComparator2是在ComparaterDemo类中定义的,那么ComparaterDemo可以看到它,但没有其他类可以。
受保护的类的功能与私有类相同,但子类也可以访问它们。因此,如果MyComparator2在ComparaterDemo和SubComparaterDemo子类中定义了ComparaterDemo,则SubComparaterDemo可以访问MyComparator2。在这个例子中,除了ComparaterDemo及其子类之外,没有其他类可以看到它。
在您的问题中,MyComparator2默认设置为受保护。如果你改变了行:&#34;类MyComparator2实现Comparator&#34; to&#34;公共类MyComparator2实现了Comparator&#34;你应该没有更多问题。
我希望这能回答你的问题
答案 1 :(得分:0)
这里发生的事情是您正在使用指定的TreeSet
构建Comparator
。这是如何工作的,对于使用add()
方法添加的每个元素,它将自动对集合进行排序。见here,