【问题标题】:How to implement Comparator.compare(T o1, T o2) method如何实现 Comparator.compare(T o1, TO o2) 方法
【发布时间】:2020-09-30 19:38:37
【问题描述】:

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) 的方式实现 Comparator.compare(T o1, T o2) 方法,返回 FAULT,当比较 FAULTINVALID 时,返回 INVALID,比较 INVALID 和 @987654329 @等等。

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

【问题讨论】:

  • 您可以为字符串为键且索引为值的值创建映射,然后您可以在比较函数中比较从映射获取的索引

标签: java collections comparator


【解决方案1】:

这里的一个简单实现是

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

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

【讨论】:

  • 或使用enum 代替String 并免费获得自然订单...
猜你喜欢
  • 1970-01-01
  • 2019-11-29
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 2017-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多