Just make your colors an enum.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Balloons {
enum Colors {RED, BLUE, GREEN}
public static void main(String[] args) {
List<Colors> list = new ArrayList<>();
list.add(Colors.RED);
list.add(Colors.BLUE);
list.add(Colors.GREEN);
list.add(Colors.RED);
list.add(Colors.BLUE);
list.add(Colors.RED);
list.add(Colors.BLUE);
list.add(Colors.GREEN);
Collections.sort(list);
System.out.println(list);
}
}
Running above code outputs the following:
[RED, RED, RED, BLUE, BLUE, BLUE, GREEN, GREEN]
Alternatively, if your colors are strings, define an appropriate comparator.
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Balloons {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Red");
list.add("Blue");
list.add("Green");
list.add("Red");
list.add("Blue");
list.add("Red");
list.add("Blue");
list.add("Green");
Comparator<String> c = (s1, s2) -> {
if ("Red".equals(s1)) {
if ("Red".equals(s2)) {
return 0;
}
return -1;
}
else if ("Blue".equals(s1)) {
if ("Red".equals(s2)) {
return 1;
}
else if ("Blue".equals(s2)) {
return 0;
}
return -1;
}
else {
if ("Green".equals(s2)) {
return 0;
}
return 1;
}
};
list.sort(c);
System.out.println(list);
}
}