1
私は変更が必要なコードを持っています。 それは以下のようになります。ラムダをthenComparingメソッドに戻す方法
new ComparatorFactory<>(thing -> thing.getLong());
return new ComparatorFactory.bySmthThenLong(things);
そして、ファクトリクラス自体:
private final Function<T, Long> getLong;
ComparatorFactory(Function<T, Long> getLong) {
this.getLong = getLong;
}
Comparator<T> bySmth(Collection<T> things) {
// Smth happens, then returns comparator.
}
そして、私は別の方法にチェーンにbySmth
方法を必要とし、これらの2つの方法が時々同じように別々でなければなりません第1段階が使用される。
private Function<T, Long> preprocessLong(Function<T, Long> getLong) {
// divide Long by some number and return new function.
}
したがって、このコンパレータの作成は私の理解にそのようになります:
Comparator<T> bySmthThenLong(Collection<T> things) {
return bySmth(things).thenComparing(preprocessLong(getLong));
}
しかし、私は比較の次のラウンド前にこのLong
に何かをする必要があるので、私はメソッドを持っている preprocessLong
メソッドが内部でどのように見えるのか分かりません。手伝ってくれる?ありがとう。
このように見えます、ありがとうございます。もし私が条件を持っていれば、 '戻り条件? (thing) - > getLong.apply(thing)/ someNumber:0; '真でない場合は0を返し、ここでそれを行う方法は? –
'return(物) - >(条件)? getLong.apply(物)/ someNumber:0; ' – feldim2425
ありがとうございました! –