gpt4 book ai didi

java-8 - Java8 到 Java7 - 迁移比较器

转载 作者:行者123 更新时间:2023-12-04 22:39:32 25 4
gpt4 key购买 nike

我无法理解如何在 Java7 中“迁移”一个简单的比较器。

我在 Java8 中使用的实际版本如下:

 private static final Comparator<Entry> ENTRY_COMPARATOR = Comparator.comparing(new Function<Entry, EntryType>() {
@Override
public EntryType apply(Entry t) {
return t.type;
}
})
.thenComparing(Comparator.comparingLong(new ToLongFunction<Entry>() {
@Override
public long applyAsLong(Entry value) {
return value.count;
}
}).reversed());

但在构建阶段我得到这个错误:
static interface method invocations are not supported in -source 7

如何将相同的比较器迁移到 Java7?我正在谷歌搜索并寻找解决方案,但我唯一能想到的是将我自己的类实现为 Comparator 接口(interface)实现。

但是如果我走那条路,我如何在同一个“比较”方法中同时应用“比较”、“然后比较”和“反向”?

提前致谢

最佳答案

甚至你的 java-8 版本也可以变得更短更容易阅读:

Comparator.comparing(Entry::getType)
.thenComparingLong(Entry::getCount)
.reversed();

guava (java-7 兼容),这看起来有点冗长:
    @Override
public int compare(Entry left, Entry right) {
return ComparisonChain.start()
.compare(left.getType(), right.getCount(), Ordering.natural().reversed())
.compare(left.getCount(), right.getCount(), Ordering.natural().reversed())
.result();
}

关于java-8 - Java8 到 Java7 - 迁移比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53833883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com