import java.util.*;

class SortOrder {
    public static final Map<String, Integer> SORT_ORDER = initializeSortOrder();

    private static Map<String, Integer> initializeSortOrder() {
        List<String> orderedStrings = Arrays.asList(
                "A",
                "B",
                "D",
                "C",
                "E",
                "F"
        );
        Map<String, Integer> indexByString = new HashMap<>();
        for (int index = 0; index < orderedStrings.size(); ++index) {
            indexByString.put(orderedStrings.get(index), index);
        }
        return Collections.unmodifiableMap(indexByString);
    }

    public static void main(String[] args) {
        List<String> testData = new ArrayList<>(Arrays.asList(
                "B", "C", "D", "E", "A"
        ));

        Collections.sort(testData, new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                return SORT_ORDER.get(s1).compareTo(SORT_ORDER.get(s2));
            }
        });

        System.out.println(testData);
    }

}
