Написание кода, который в суперклассе имеет метод compareTo() и должен быть реализован в классе тестера.Метод сравнения переменной в Java
Моя проблема заключается в том, что я не могу заставить метод compareTo() работать в классе Animal. Любая помощь очень ценится!
код до сих пор:
import java.util.Comparator;
abstract class Animal implements Comparable<Animal> {
private String firstName;
private String lastName;
private int size;
// Default Constructor
public Animal(String firstName, String lastName, int size){
super();
firstName = "";
lastName = "";
size = 0;
}
// Setters and Getters
public void setFirstName(String firstName){
firstName = firstName;
}
public String getFirstName(){
return firstName;
}
public void setLastName(String lastName){
lastName = lastName;
}
public String getLastName(){
return lastName;
}
public void setSize(int size){
size = size;
}
public int getSize(){
return size;
}
// CompareTo method
public int compareTo(Animal compareAnimal) {
String compareFirstName = ((Animal) compareAnimal).getFirstName();
return firstName;
}
// Abstract method to be implemented in subclasses
abstract String sound();
// To be overriden in subclasses
@Override
public String toString(){
return getFirstName() + getLastName() + getSize() + " says " + sound();
}
}
public class Dog extends Animal {
// Calls the constructor in the superlcass
public Dog(String firstName, String lastName, int size){
super(firstName, lastName, size);
}
// Implements the abstract methods in Animal class
public String sound(){
return "woof";
}
}
public class Cat extends Animal {
// Calls the constructor in the superlcass
public Cat(String firstName, String lastName, int size){
super(firstName, lastName, size);
}
// Implements the abstract methods in Animal class
public String sound(){
return "meow";
}
}
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.LinkedList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
public class Tester {
public static void main(String[] args) {
Dog dog1 = new Dog();
Cat cat1 = new Cat();
dog1.setFirstName("Patch");
dog1.setLastName("Cabbage");
dog1.setSize(5);
System.out.println(dog1.toString());
System.out.println();
cat1.setFirstName("Felix");
cat1.setLastName("Longbottom");
cat1.setSize(3);
System.out.println(cat1.toString());
System.out.println();
// Create new ArrayList
LinkedList<Animal> animalList = new LinkedList<>();
// Add animals to the animalList
animalList.add(dog1);
animalList.add(cat1);
// Sort by first name
List <String> firstName = new LinkedList<String>();
try{
File file = new File("Animals.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
while ((line = reader.readLine()) != null){
firstName.add(line);
}
} catch(Exception e){
e.printStackTrace();
}
Iterator<String> itr = firstName.iterator();
while (itr.hasNext()) {
String person = itr.next();
System.out.println(person);
}
Collections.sort(firstName);
class InnerClass implements Comparator {
// body
}
}
}
Что вы ожидаете от случившегося и что происходит? Что вы пробовали? –
Я хочу использовать compareTo для сортировки firstName в классе тестера, но то, что я пытаюсь в настоящее время, не позволит этому результату. @SteveClanton –
@SteveClanton в классе Animal, я хочу использовать метод compareTo для сравнения firstName, а затем в использовании тестера Collections.sort(), чтобы отсортировать список по первому имени и затем переопределить метод compareTo для сортировки по другим переменным. –