Вот мой код
class ComparableTest
{
public static void main(String[] args)
{
BOX[] box = new BOX[5];
box[0] = new BOX(10,8,6);
box[1] = new BOX(5,10,5);
box[2] = new BOX(8,8,8);
box[3] = new BOX(10,20,30);
box[4] = new BOX(1,2,3);
Arrays.sort(box);
for(int i=0;i<box.length;i++)
System.out.println(box[i]);
}
}
Также у меня есть класс BOX, который реализует Comparable. Теперь у меня есть несколько вопросов, с которыми я хотел бы, чтобы вы все мне помогли.
1. Являются ли методы, объявленные в сопоставимом интерфейсе, определенными системой, например, могу ли я иметь какой-либо метод в сопоставимом интерфейсе, или он должен быть только compareTo
?
2. Я не предоставил реализацию метода Arrays.sort, как тогда он сортирует мои элементы?
3. Когда я использую Comparator
вместо comparable
, я использую:
class comparatorTest
{
public static void main(String args[])
{
Student[] students = new Student[5];
Student[0] = new Student(“John”,”2000A1Ps234”,23,”Pilani”);
Student[1] = new Student(“Meera”,”2001A1Ps234”,23,”Pilani”);
Student[2] = new Student(“Kamal”,”2001A1Ps344”,23,”Pilani”);
Student[3] = new Student(“Ram”,”2000A2Ps644”,23,”Pilani”);
Student[4] = new Student(“Sham”,”2000A7Ps543”,23,”Pilani”);
// Sort By Name
Comparator c1 = new studentbyname();
Arrays.sort(students,c1);
for(int i=0;i<students.length;i++)
System.out.println(students[i]);
}
}
//В приведенном выше коде studentbyname implements comparator
, но box все еще реализует comparable
.т.е.
class studentbyname implements comparator
{
public int compare(Object o1,Object o2)
{
Student s1 = (Student) o1;
Student s2 = (Student) o2;
return s1.getName().compareTo(s2.getName());
}
}
Сейчас я делаю Arrays.sort(students,c1)
, почему я сейчас прохожу с1?