Reduce
1499 ワード
Reduce()演算
非定義演算のプログラマが直接実施する演算を適用する
フォーマットは
T reduce(T identify, BinaryOperator<T> accumulator)
最終演算は、ストリーム内の要素を消費し、演算を実行します.Reduce()
法における第2の要素伝達ランダ式によれば、様々な機能を実行することができる.ramda式が直接実現された場合、または式長が実現された場合、
BinaryOperator
を実現したクラスが使用される.配列の中のすべての要素の和のreduce()演算を求めます
Ex)
Arrays.stream(arr).reduce(0, (a,b) -> a+b));
配列に複数の文字列がある場合に最も長い文字列を検索
Ex)
import java.util.Arrays;
import java.util.function.BinaryOperator;
class CompareString implements BinaryOperator<String>{
@Override
public String apply(String s1, String s2) {
{if(s1.getBytes().length>= s2.getBytes().length) return s1;
else return s2;}
}
}
public class ReduceTest {
public static void main(String[] args) {
String greetings[] = {"hello","hi","Good morning","안녕하세요"};
System.out.println(Arrays.stream(greetings).reduce("",(s1, s2) ->
{if(s1.getBytes().length>= s2.getBytes().length) return s1;
else return s2;}
));
String str = Arrays.stream(greetings).reduce(new CompareString()).get();
System.out.println(str);
}
}
ハングルの方がバイトが大きいのでbyteで計算すると一番長い「こんにちは」が出力されます.Reference
この問題について(Reduce), 我々は、より多くの情報をここで見つけました https://velog.io/@kimkh0930/Reduceテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol