集合APIの強化


コレクション工場

  • Arrays.asList():リスト
  • 固定サイズのリスト
  • を作成する.
  • 要素
  • を追加または削除できません.
  • 要素を追加すると、
  • が生成されます.
  • 新HashSet<>(Arrays.asList():集合
  • Java 9で使用可能

  • インベントリ工場
  • List.of()
  • List<String> list = List.of("1", "2", "3");
    => 변경할 수 없는 리스트
  • 重合工場
  • Set.of()
  • Set<String> set = Set.of("1", "2", "3");
    중복 요소 X -> IllegalArgumentException발생 
    집합은 오직 고유의 요소만 포함할 수 있다는 원칙!
  • 地図工場
  • Map.ofEntry():パラメータMap.受信entry(K,V)
  • Map<String, Integer> map = Map.ofEntries(
        entry("1", 1),
        entry("2", 2),
        entry("3", 3)
    );
    Map.entry는 Map.Entry 객체를 만드는 새로운 팩토리 메서드

    java 8!!


    リストとコレクションの処理

  • removeIf:消去要素
  • すべてを置換:要素変更
  • sort:リストソート
  • インベントリ

  • removeIf
  • removeIfメソッドは、削除する要素を指すpredicateをパラメータとして受け入れます.
  • List<Board> boards = new ArrayList<>(
      Arrays.asList(
        new Board("제목1", "내용1", true),
        new Board("제목2", "내용2", true),
        new Board("제목3", "내용3", false),
        new Board("제목4", "내용4", false),
        new Board("제목5", "내용5", true),
        new Board("제목6", "내용6", false)
      )
    );
    boards.removeIf(board -> board.isDelYn());
    [   
      Board{title='제목3', content='내용3', delYn=false}, 
      Board{title='제목4', content='내용4', delYn=false}, 
      Board{title='제목6', content='내용6', delYn=false}
    ]
  • replaceAll
  • リストの各要素を新しい要素に変換できます.
  • boards.replaceAll(board -> {
      board.setContent(board.getContent() + " 입니다.");
      return board;
    });
    [
      Board{title='제목3', content='내용3입니다.', delYn=false}, 
      Board{title='제목4', content='내용4입니다.', delYn=false}, 
      Board{title='제목6', content='내용6입니다.', delYn=false}
    ]

    地図

  • forEach
  •     Map<String, String> maps = new HashMap();
        maps.put("1", "프랑스");
        maps.put("2", "한국");
        maps.put("3", "미국");
        maps.put("4", "아랍에미리트");
        maps.put("5", "일본");
    
        maps.forEach((key, name)-> System.out.println("key : " + key + ", 나라 : " + name));
  • ソート方法
  • Entry.comparingByValue
  • Entry.comparingByKey
  •     maps.entrySet()
            .stream()
            .sorted(Map.Entry.comparingByValue())
            .forEachOrdered(System.out::println);
    3=미국
    4=아랍에미리트
    5=일본
    1=프랑스
    2=한국

  • getOrDefaultメソッド
  • に既存の鍵が存在しない場合は空に戻りますので、Null PointerExceptionが発生しないようにチェックする必要があります.
  • getOrDefaultの簡単な解決
  • 最初のパラメータ:キー、2番目のパラメータ:デフォルト
  • キーが存在するかどうかは、2回目の買収
  • に戻るかどうかを決定する.
      System.out.println(
        maps.getOrDefault("6", "없음")
      ); // 없음
      System.out.println(
        maps.getOrDefault("2", "없음")
      ); // 한국
  • 計算モード
  • computeIfAbsent
    与えられた鍵に対応する値がない場合、鍵を使用して新しい値を計算し、マッピングに追加する
  • .
  • computeIfPresent
    提供鍵
  • が存在する場合、新しい値が計算され、マッピングに追加される
  • .
  • compute
    提供鍵
  • を使用して新しい値を計算し、それをマッピングに保存する(鍵がない場合はNullPointerExceptionが起動する)
  • .
      maps.computeIfAbsent("6", (key) -> maps.put(key, "태국"));
      System.out.println(maps); // {1=프랑스, 2=한국, 3=미국, 4=아랍에미리트, 5=일본, 6=태국}
    
      maps.computeIfPresent("6", (key, value)-> value + " 중복");
      System.out.println(maps); // {1=프랑스, 2=한국, 3=미국, 4=아랍에미리트, 5=일본, 6=태국 중복}
    
  • 削除モード
  • remove : remove(key, valye)
  • 置換モード
  • replaceAll
  • replace
  •   maps.replaceAll((key, value) -> value + " replaceAll");
      System.out.println(maps); // {1=프랑스 replaceAll, 2=한국 replaceAll, 3=미국 replaceAll, 4=아랍에미리트 replaceAll, 5=일본 replaceAll}
    
      maps.replace("2", "대한민국");
      System.out.println(maps); // {1=프랑스, 2=대한민국, 3=미국, 4=아랍에미리트, 5=일본}
  • 合針
  • putAll
  • merge
  • Map<String, Integer> map1 = new HashMap<>();
    map1.put("A", 100);
    map1.put("B", 200);
    map1.put("C", 300);
    Map<String, Integer> map2 = new HashMap<>();
    map2.put("C", 400);
    map2.put("D", 500);
    map2.put("E", 600);
    
    map1.putAll(map2);
    System.out.println(map1); // {A=100, B=200, C=400, D=500, E=600}
    
    // merge와 forEach를 사용하면 중복된 값을 어떻게 처리할지 처리할 수 있음.  
    map2.forEach((key, value) -> map1.merge(key, value, (v1, v2) -> v1 + v2));
    System.out.println(map1); // {A=100, B=200, C=700, D=500, E=600}

    改善されたConcurrentHashMap


    ConcurrentHashMapクラスは、最新技術を反映した同期HashMapバージョンです.
    検索
  • Reduce
  • forEach:各(キー、値)ペアに対して所与の動作
  • を実行する.
  • reduce:提供されたすべての(キー、値)ペアのreduce関数を使用して
  • をマージ
  • search:空でない値が返されるまで、各(キー、値)に関数を適用します.
  • 係数
  • mappingCount:マッピング数
  • を返す
  • コレクションビュー
  • キーセット:ConcurrentHashMapをコレクションビュー
  • に戻す