バックエンド死亡経路TIL 04第1


学習目標


講座を聞いて、私の知っている内容をチェックして、
新しい学習内容を整理する.
あなたの疑問を理解し、理解します.

Collection


Collectionは、複数のデータを集約できる抽象的なインタフェースです.
Collectionを導入する前に,汎用的な標準インタフェースがないため,プログラマはすべてのタイプの集合を処理するためにアルゴリズムを記述することが困難であった.
したがって、JDK 1.2からCollectionを導入すると、以下の利点があります.
  • javaセットは、親インタフェースによって実装されるすべてのクラスに共通の方法を提供し、APIを一貫させる.
  • は抽象化されており、データ構造が使いやすくなっています.
  • は、プログラマが特定のデータ構造の実装を考慮する必要がないように、有用なデータ構造およびアルゴリズムの高性能実装を提供する.
  • 集合階層



    (出典:https://www.geeksforgeeks.org/collections-in-java-2/)
    集合は,Set,List,Queueインタフェースによって実装される.
    各クラスは、これらの親インタフェースを継承して、特定のデータ構造を実現します.
    MapインタフェースもCollectionとして単独で定義されているが,構造上の相違によるものである.

    iterator


    奇形機は、コレクションからストレージ要素を取得する方法を標準化するインタフェースです.
    CollectionはIterableを実装しているので,集合実装のサブクラスもIteratorを実装することができる.
    デフォルトでは、2つの方法があります.
  • T next()メソッドで次のデータを問い合わせることができます.
  • booleanhasNext():次の方法があるかどうかを確認します.
  • JDK 1.5からは、「拡張」文を使用して、同じパフォーマンスを維持しながらコードの明瞭性を確保し、エラーを回避することをお勧めします.
    ただし、要素を選択的に削除または置換するには、反復器を使用する必要があります.

    Stream


    Streamは、データ・ストリームである利用可能なテクノロジーです.
    Java 8の前に配列または集合インスタンスを処理するには、forまたはforeachで要素を1つずつ抽出します.この方法の欠点は,論理が複雑であるほど符号化が困難であることである.
    しかし,Streamはram式を用いてコードの表現を簡略化し,配列と集合を関数的に処理し,複数の高次関数を用いて強力な機能を確実に使用することを可能にする.
    さらに、要素をより迅速に処理できる簡単な並列処理方法も提供されます.
    Stream

  • 作成
    Streamは、Streamオブジェクトを作成および使用するか、配列、コレクション、カウント、ファイルなどのストリームを作成できます.ただし、繰り返し使用することはできません.演算が完了した後に再生成する必要があります.

  • 加工
    これは、データを加工するための中間演算であり、演算結果をStreamに戻すため、演算を継続することができる.これをメソッドチェーンと呼ぶ.

  • 結果の作成
    これは、加工されたデータから必要な結果を得るプロセスであり、Streamの要素を消費する必要があるため、一度しか処理できません.
  • 3つの段階に分けられます.

    Optional


    Javaでは、ほとんどのコンテンツが参照値であるため、結果値は常にnullにすることができます.
    また、nullではなく初期値を使用して、nullによるエラーのNull PointerExceptionチェックロジックを回避し、低減することをお勧めします.あるいは、Emptyオブジェクトを使用して空のジェネレータを作成して、これらのプロシージャのエラーを確認し、空の保護を行うこともできます.
    ただし、Java 8からはOptionalを使用してNullPointerExceptionを回避できます.Optionalは、nullの値をnullが発生しないように再ラップするrapperクラスです.
    //빈 객체 생성
    Optional<String> opt = Optional.empty();
    
    //문자열 값이 비어있는지 확인하고 비어 있으면 "null?"로 초기화
    Optional<String> optional = Optional.ofNullable(getString());
    String str = optional.orElse("null?");
    Ramda計算もサポートされ、ストリームのように作成-加工-エクスポート結果の演算を実行できます.