List<String> orderings= Stream.of("温度", "运行时间").collect(Collectors.toList());
List<String> target= Stream.of("温度1", "运行时间ss","运行时间", "温度").collect(Collectors.toList());
如上数据源:
要排序target。
要求最终效果:
List<String> target= Stream.of("温度", "运行时间", "温度1","运行时间ss").collect(Collectors.toList());
缺陷方法:
Ordering ordering = Ordering.explicit(orderings);
List<String> strings = target.stream().sorted(new Comparator<String>() {
@Override
public int compare (String o1, String o2) {
if (target.contains(o1) && target.contains(o2)) {
return ordering.compare(o1, o2);
} else {
return 0;
}
}
}).collect(Collectors.toList());
但是这样,只会排序 含有orderings元素的 数据。求合理灵活便捷优雅(是优雅的,是优雅的,是优雅的,别for循环ifelse)的算法
山不转那水在转。
既然,给出的标准排序 不够数,那就跟 要排序的 数据 对比进行合并,筹够数,那么最终符合我的安排的排序方法。只加多一句代码
这种对比字符串的可能意义不大。但这是简化需求的。实际target是对象,Map就有这个必要了
最终结果:
[温度, 运行时间, 温度1, 运行时间ss]