ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java 12-17. 주요 변경 내용
    BackEnd/Java 2024. 12. 10. 23:00
    반응형

    String 클래스 API 

    indent 함수 (Java 12)

      문자열의 각 줄에 들여쓰기를 추가하거나 제거하는 데 사용됩니다.

    String str = """
        A
        BC
        DEF
        """.indent(3);
    • 매개변수 n > 0: 각 줄의 시작에 n개의 공백을 추가합니다.
    • 매개변수 n < 0: 각 줄의 시작에서 최대 n개의 공백을 제거합니다.
    • 매개변수 n = 0: 줄은 변경되지 않고 줄 끝에 개행 문자만 추가됩니다.

     

    stripIndent 함수 (Java 15)

      문자열의 각 줄에서 공통된 선행 공백(들여쓰기)을 제거합니다.

    String str = " A\n  B\n C";
    System.out.println(str.stripIndent()); // A, B, C 앞 공통된 공백 한 칸씩 제거됩니다.

     

    formatted 함수 (Java 15)

      String.format() 함수와 동일합니다. String.format() 함수는 static 메소드이고, formatted 함수는 인스턴스 메소드입니다. 

    String str = """
        제 이름은 %s 이고
        나이는 %s 입니다.
        """.formatted("홍길동", 40);

     

    Files 클래스 API

    mismatch 함수 (Java 12)

      서로 다른 파일의 내용물을 비교할 때 사용하는 메소드로, 파일의 내용물이 같은지 다른지 쉽게 확인 가능합니다. 내용이 다를 경우 첫번째로 다른 부분의 index를 반환하고, 내용이 같을 경우 -1을 반환합니다.

     

    Collectors 클래스 API

    teeing 함수 (Java 12)

      Collectors.teeing()은 static 메소드로, 두 개의 Collector를 결합하여 새로운 결과를 생성합니다. 두 개의 downstream Collector와 하나의 merger 함수를 매개변수로 받습니다. 다음은 숫자 리스트의 최소값과 최대값을 찾아 합산하는 작업을 teeing() 메소드를 사용한 코드입니다.

    List<Integer> numbers = Arrays.asList(42, 19, 2, 35);
    int sumOfMinMax = numbers.stream().collect(
        Collectors.teeing(
            Collectors.minBy(Integer::compareTo),
            Collectors.maxBy(Integer::compareTo),
            (minBy, maxBy) -> minBy.get() + maxBy.get()
        )
    );
    // 결과: 44

     

    Stream 클래스 API

    mapMulti 함수 (Java 16)

      하나의 입력 값을 받아 여러 개의 출력 값을 생성할 수 있는 기능을 제공합니다. 두번째 매개변수로 Consumer를 받아 결과를 생성합니다. mapMulti()는 복잡한 변환 로직이 필요한 경우나, 하나의 입력에서 여러 출력을 생성해야 할 때 사용할 수 있습니다.

    List<Integer> result = Stream.of(1, 2, 3)
        .mapMulti((Integer no, Consumer<Integer> consumer) -> {
            consumer.accept(no);
            consumer.accept(-no);
        }).toList();
    // 결과: [1, -1, 2, -2, 3, -3]

     

    toList 함수 (Java 16)

      Stream의 요소를 List로 수집하는 메소드입니다.

    • Stream.collect(Collectors.toList()) (Java 8 이상): ArrayList를 반환, 반환된 List는 수정 가능합니다.
    • Stream.toList() (Java 16 이상): Collectors.UnmodifiableList를 반환, 반환된 List는 수정 불가능합니다.

     

    새로운 Random API

    Java 17 이전 Random 클래스

    • Random: 일반적인 경우
    • ThreadLocalRandom: 멀티 쓰레드 환경
    • SecureRandom: 암호학적인 난수가 필요할 때

     

    Random random = new Random();
    random.nextInt(10); // 0 ~ 9 사이 정수 생성!

     

      Java 17에서는 Enhanced Pseudo-Random Number Generators (PRNGs)라는 새로운 난수 생성 API가 도입되었습니다.

    • RandomGenerator 인터페이스: 새로운 난수 생성기 인터페이스
    • 다양한 PRNG 알고리즘: RandomGeneratorFactory를 통해 여러 난수 생성 알고리즘 선택 가능
    • 기존 클래스 확장: java.util.Random, SplittableRandom, SecureRandom 등 기존 난수 생성 클래스들이 새로운 RandomGenerator 인터페이스 구현
    import java.util.random.RandomGenerator;
    import java.util.random.RandomGeneratorFactory;
    
    // 모든 구현체 확인
    RandomGeneratorFactory.all()
      .forEach(f -> System.out.println(f.name()));
    
    // 기본 구현체 L32X64MixRandom: RandomGeneratorFactory.getDefault();
    RandomGenerator generator = RandomGeneratorFactory.of("L32X64MixRandom").create();
    int randomNumber = generator.nextInt(100); // 0에서 99 사이의 난수 생성
    반응형

    'BackEnd > Java' 카테고리의 다른 글

    Java 21. Switch Pattern Matching  (0) 2024.12.12
    Java 21. Record Pattern  (0) 2024.12.11
    Java 17. Sealed Class  (1) 2024.12.09
    Java 16. Record Class  (2) 2024.12.08
    Java 16. instanceof Pattern Matching  (0) 2024.12.08

    댓글

Designed by Tistory.