如何实现 Comparator.compare(T o1, TO o2) 方法

How to implement Comparator.compare(T o1, T o2) method

private static final String[] values = { FAULT, INVALID, QUERY, SKIP, SUCCESS, NO_ACTION }

我的用例要求我以 public static <T> T min(Collection<? extends T> coll,Comparator<? super T> comp) returns FAULT 的方式实现 Comparator.compare(T o1, T o2) 方法,当比较 FAULTINVALID, returns INVALID,比较INVALIDQUERY等时.

String.compareTo() 在这种情况下不起作用,因为这会导致字典顺序。

这里的一个简单实现是

Comparator<String> cmp = Comparator.comparingInt(Arrays.asList(values)::indexOf);

...这将找到您在此处提供的 values 数组中首次出现的字符串。 (如果数组中不存在任何字符串,将首先返回这些字符串,但听起来并非如此。)