Я пытаюсь создать метод compareTo
, который я использую для сортировки списка в следующем порядке: белый, желтый, оранжевый, красный, синий, фиолетовый, черный. Где белый - первый цвет.
У меня есть объект Fruit, который содержит различные виды фруктов, эти фрукты указываются в расширенном классе. Все фрукты имеют цвет (который также находится в списке цветов).
Я пытался написать оператор if-else, чтобы, если цвет плода был желтым, возвращалось 1 et c. и это для всех цветов. Но, похоже, это не сработало.
Кто-нибудь может мне помочь написать метод compareTo?
Заранее спасибо!
Мой абстрактный класс Fruit, в котором я реализую CompareTo. Метод:
public abstract class Fruit implements Comparable<Fruit>, Edible {
String name;
Color color;
boolean fluid;
public Fruit(String name, Color color, boolean fluid) {
this.name = name;
this.color = color;
this.fluid = fluid;
}
public abstract boolean isRotten();
@Override // I don't know how to create this one correctly
public int compareTo(Fruit fruit) {
if (this.getColor().getName().equals("white")){
return 0;
}
if (this.getColor().getName().equals("yellow")){
return 1;
}
if (this.getColor().getName().equals("orange")){
return 2;
}
if (this.getColor().getName().equals("red")){
return 3;
}
if (this.getColor().getName().equals("blue")){
return 4;
}
if (this.getColor().getName().equals("purple")){
return 5;
}
if (this.getColor().getName().equals("black")){
return 6;
}
else return -1;
}
public Color getColor() {
return color;
}
@Override
public boolean isEdible() {
return !isRotten();
}
}
Класс для Color:
public class Color {
private String name;
public static final String WHITE = "white";
public static final String YELLOW = "yellow";
public static final String ORANGE = "orange";
public static final String RED = "red";
public static final String BLUE = "blue";
public static final String PURPLE = "purple";
public static final String BLACK = "black";
public String getName() {
return name;
}
public Color(String name) {
this.name = name;
}
}
Класс, в который я добавляю различные фрукты в список и сортирую список:
public class FruitSortingMachine {
private List<Fruit> fruits = new ArrayList<>();
/**
* Instantiates a new Fruit sorting machine.
*/
public FruitSortingMachine(){}
/**
* Sort.
*/
public void sort() {
Collections.sort(fruits);
}
/**
* Gets fruits.
*
* @return the fruits
*/
public List<Fruit> getFruits() {
return this.fruits;
}
/**
* Add fruit boolean.
*
* @param fruit the fruit
* @return the boolean
*/
public boolean addFruit(Fruit fruit) {
if (!fruit.isEdible()){
return false;
}
else this.fruits.add(fruit);
return true;
}
}