第14章-定理


14.ランダとスターリン
1.青茶式
1つの方法
すべてのメソッドはクラスに含める必要があります.そのため、このメソッドを呼び出すには、新しいクラスを作成し、オブジェクトを作成する必要があります.しかし、藍達式にはこのすべての過程がなく、藍達式自体だけがこの方法の役割を果たすことができる.
ex)は最大値を返す(a, b) -> a > b ? a: b関数インタフェース
ラムダ式のインタフェースの処理に使用
関数型インタフェースは、抽象的なメソッドを1つだけ定義する必要があります.
ランダ式は匿名クラスと同じです.
関数型インタフェースの匿名オブジェクトを実装する方法は、Ram多項式のパラメータタイプ、個数および戻り値と一致するため、関数型インタフェースを実装する匿名オブジェクトをRam多項式に置き換えることができる.
MyFunction f = new MyFunction() {
		public int max(int a, int b) {
       		return  a > b ? a : b;
    	}
	};
    
MyFunction f = (int a, int b) -> a > b ? a : b;
@FunctionalInterface
interface MyFunction {
	public abstract int max(int a, int b);
}
関数インタフェースタイプのパラメータと戻りタイプ
メソッドのパラメータタイプが関数インタフェースタイプの場合、このメソッドを呼び出すときに、ラムダ式を参照する参照変数をパラメータとして指定する必要があります.
メソッドの戻りタイプが関数型インタフェースタイプである場合、この関数型インタフェースの抽象メソッドと等価な参照変数を返すか、ram式を直接返すことができます.
ラムド式のタイプとフォーマット変換
ただ,関数型界面はラム多式を参照できるが,ラム多式の唐飛耳関数型界面のタイプとは一致しない.
ブルーマルチは匿名オブジェクトで、匿名オブジェクトにはタイプがありません.
ラムダ式は関数型界面でしか変形できない.
外部変数を参照するラムダ式
ランダ式で参照される領域変数はFINALがなくても定数と見なされる.
外部領域の熟成と同じ名前のramda式パラメータは使用できません.
Java.util.関数パッケージ
一般的なフォーマットの方法を関数インタフェースのパッケージとして事前に定義します.
関数インタフェースメソッドはjavaを説明します.lang.runnablevoid run()パラメータはなく、戻り値SupplierT get()パラメータもなく、戻り値Consumervoid accept(T)パラメータのみであり、戻り値FunctionR apply(T)通常関数はありません.パラメータを受信し、PredicateBoolean Test(T)条件式を表す結果を返します.パラメータは1つのみであり、戻りタイプはブールBiConsumervoid Accept(T,U)の2つのパラメータであり、戻り値BiFunctionR Apply(T,U)の2つのパラメータはなく、BiPredicationBoolean Test(T,U)条件式を返すために使用される.パラメータは2つで、戻りタイプはbooleanです.
UnaryOperatorとBinaryOperator
関数インタフェースメソッドは、UnaryOperatorT apply(T)Functionの子孫を示します.Functionとは異なり、パラメータと結果のタイプは同じです.BinaryOperatorT apply(T,T)BiFunctionの子孫.BiFunctionとは異なり、パラメータと結果のタイプは同じです.
きのうごうせい
ラム茶式を合成して新しいラム茶式を作ることができます.
関数f,gが存在する場合、f.andthen(g)は、まず関数fを適用し、次に関数gを適用する.
f.compose(g)は逆に、gを先に適用し、fを適用する.
しゅだんけつごう
新しいPredicateの組み合わせとしてand()、or()、negate()で接続できます.
メソッド参照
1つの方法のみを呼び出すramda式は、클래스이름::메서드이름または참조변수::메서드이름に変更することができる.
スタティックメソッドリファレンス(x)->ClassNameを参照してください.method(x)ClassName::methodインスタンスメソッドリファレンス(obj,x)->obj.method(x)ClassName::methodは、特定のオブジェクトインスタンスメソッド(x)->objを参照します.method(x)obj::methodジェネレータ()->new ClassName()ClassName::new
2.ストリーム(stream)
データ・ソースの抽象化とデータの処理の一般的な方法を定義します.
ストリームを使用すると、配列または集合、およびファイルに格納されているデータを同じ方法で処理できます.
ストリームフィーチャー
  • ストリームは、データ・ソースを変更しません.
  • ストリームは使い捨てです.
  • ストリームは、タスクを内部反復処理として処理する.
  • フロー計算
  • 中間演算
    演算結果はストリームの演算です.中間演算は連続対流で行うことができる.
  • 最終演算
    計算結果はストリームではありません.ストリーム内の要素を消費するため、一度だけです.
  • ちえんえんざん
    中間演算を呼び出すのは、どの操作を実行すべきかを指定するだけです.最終演算が実行されると、ストリーム内の要素は中間演算によって最終演算に消費されます.
    フローの作成

  • コレクション
    集合の最上位祖先Collectionでstream()が定義されています.したがって、リストおよびSetを実装するクラスは、この方法を使用してストリームを作成することができる.

  • 整列
    配列をソースとするストリームを生成する方法は、StreamおよびArraysで静的方法として定義される.

  • 特定範囲の整数
    IntStreamとLongStreamには、ストリームによって指定された範囲の連続整数を作成して返されるrange()とrangeClosed()があります.

  • 任意の数
    整数を生成する非ランダムカーソルには、インスタンスメソッドが含まれます.これらのメソッドは、このタイプの乱順からなるストリームを返します.
    このストリームは、サイズが不明な「無限ストリーム」であり、limit()とともに使用してサイズを制限する必要があります.

  • ラム多項式反復(),generate()
    iterate()は、シード値(seed)で指定した値から始まり、ram多項式で計算した結果に基づいて、シード値で計算を繰り返し、無限流を生成します.
    generate()は無限流を作成することによってラム多式で計算された値を要素として返すが,反復とは異なり,以前の結果は利用しない.

  • ファイル
    List()は、指定したディレクトリ内のファイルリストをソースとするストリームです.

  • くうりゅう
    要素の空のストリームはありません.

  • 2つのストリームの接続
    Streamの静的メソッドconcat()を使用して、2つのストリームを接続できます.
  • ちゅうかんえんざん
  • skip()
    要素をスキップします.
  • limit()
    要素の個数を制限します.
  • filter()
    与えられた条件に合致しない要素をフィルタします.
    複数回使用できます.
  • distinct()
    重複する要素をストリームから削除します.
  • sorted()
    対流をソートします.
    -map()
    ストリームに格納された要素の値から必要なフィールドを抽出したり、特定のフォーマットに変換したりするために使用します.
  • peek()
    演算と演算の間に正しい処理が行われているかどうかを確認するために使用します.
  • Optional
    ムカデレベルで「T型の対象」を包むラップレベル.
    if文で定義された空のないチェックの方法を使用して、簡潔で安全なコードを記述できます.
    さいしゅうえんざん
  • forEach()
  • 条件チェック-allMatch()、anyMatch()、nonMatch()、findFirst()、findAny()
  • 統計-count()、sum()、average()、max()、min()
  • 冗長-reduce()
  • collect
  • collect
  • collect()
    ストリームの最終演算.船を出す変数コレクターが必要です.
  • Collector
    インタフェースコレクタはこのインタフェースを実装する必要があります.
  • Collectors
    クリス.静的メソッドを使用して事前に作成されたコレクタを提供します.
  • ストリームをセットと配列に変換する-toList()、toSet()、toMap()、toCollection()、toArray()
  • 統計-カウント()、要約()、averagingInt()、maxBy()、minBy()
  • 冗長-シン()
  • 結合
  • 文字列-接続()
  • パケット-パケットBy()、パーティションBy()