I have a list of Animals where there are 3 types TIGER, DOG, ANT, they also have a field that determines the order that needs to be sorted
public class Animal {
    private final AnimalType animalType;
    private final int orderNumber;
    public Animal(AnimalType animalType, int orderNumber) {
        this.animalType = animalType;
        this.orderNumber = orderNumber;
    }
    public int getOrderNumber() {
        return orderNumber;
    }
    public AnimalType getAnimalType() {
        return animalType;
        }
    }
    public enum AnimalType {
        TIGER("tiger"),
        DOG("dog"),
        ANT("ant");
    }
The list needs to be sorted by putting the TIGER first then DOG then ANT, but also each Animal has a sequential order number
So if we have this:
List<Animal> animals = new ArrayList<>();
animals.add(new Animal(TIGER, 2));
animals.add(new Animal(DOG, 5));
animals.add(new Animal(ANT, 1));
animals.add(new Animal(ANT, 3));
animals.add(new Animal(TIGER, 3));
animals.add(new Animal(DOG, 4));
animals.add(new Animal(TIGER, 1));
animals.add(new Animal(DOG, 2));
animals.add(new Animal(DOG, 1));
animals.add(new Animal(ANT, 2));
animals.add(new Animal(DOG, 3));
After sorting, it should be like this
new Animal(TIGER, 1);
new Animal(TIGER, 2);
new Animal(TIGER, 3);
new Animal(DOG, 1);
new Animal(DOG, 2);
new Animal(DOG, 3);
new Animal(DOG, 4);
new Animal(DOG, 5);
new Animal(ANT, 1);
new Animal(ANT, 2);
new Animal(ANT, 3);
What is the best way to sort it ?? I am using Android so it should be Java 7.