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.