慕斯709654
参照guava的ExplicitOrdering类做一些改动就行啦。
List orderings= Stream.of("温度", "运行时间").collect(Collectors.toList());
List target= Stream.of( "运行时间ss","运行时间","3","温度1", "温度").collect(Collectors.toList());
class ExplicitOrdering implements Comparator {
private Map indexMap = new HashMap();
public ExplicitOrdering(List explicit) {
for (int i = 0; i < explicit.size(); i++) {
indexMap.put(explicit.get(i),i);
}
}
@Override
public int compare(T o1, T o2) {
return rank(o1) - rank(o2);
}
private int rank(T value) {
Integer rank = indexMap.get(value);
if (rank == null) {
return Integer.MIN_VALUE;
}
return rank;
}
}
List strings = target.stream().sorted(new ExplicitOrdering<>(orderings).thenComparing(Comparator.naturalOrder())).collect(Collectors.toList());
System.out.println(strings);