[JAVA8] API의 기본 메서드와 스태틱 메서드

자바 8에서 추가한 기본 메서드로 인한 API 변화

Iterable의 기본 메서드

  • forEach()
  • spliterator()
    public static void main(String[] args) {
        ArrayList<String> strList = new ArrayList<>();
        strList.add("test1");
        strList.add("test2");
        strList.add("test3");
        strList.add("test4");
        strList.add("test5");

        //strList.forEach(Consumer<? super String> action)
        strList.forEach((s) ->{
            System.out.println("forEach : " + s);
        });

        //메서드 레퍼런스
        strList.forEach(System.out::println);
        
//        출력
//        forEach : test1
//        forEach : test2
//        forEach : test3
//        forEach : test4
//        forEach : test5
//        test1
//        test2
//        test3
//        test4
//        test5


        // 쪼갤수 있는 기능을 가진 iterator
        Spliterator<String> spliterator = strList.spliterator();
        // List를 Spliterator로 변환한 것을 절반으로 나눈다.
        Spliterator<String> spliterator1 = spliterator.trySplit();
        Spliterator<String> spliterator2 = spliterator.trySplit();

        // hasNext가 아닌 tryAdvance
        while(spliterator.tryAdvance(System.out::println));
        System.out.println("=============================");
        while(spliterator1.tryAdvance(System.out::println));
        System.out.println("=============================");
        while(spliterator2.tryAdvance(System.out::println));

//        출력 (spliterator가 2개일 때)
//        test3
//        test4
//        test5
//        =============================
//        test1
//        test2

//        출력 (spliterator가 3개일 때)
//        test4
//        test5
//        =============================
//        test1
//        test2
//        =============================
//        test3
    }

Collection의 기본 메서드

  • stream() / parallelStream()
    • stream()
      • 자원들을 스트림으로 만들어 functional하게 처리 가능하다.

spliterator를 사용하고 있다.

  • removeIf(Predicate)
  • spliterator()
        ArrayList<String> strList2 = new ArrayList<>();
        strList2.add("test1");
        strList2.add("test2");
        strList2.add("test3");
        strList2.add("test3");
        strList2.add("test4");

        long cnt = strList2.stream().map(String::toUpperCase)
                            .filter(s -> s.endsWith("3"))
                            .count();
        System.out.println(cnt);

        // 출력
        // 2
        
        strList2.removeIf(s -> s.endsWith("4"));
        strList2.forEach(System.out::println);
        
//        출력
//        test1
//        test2
//        test3
//        test3

Comparator의 기본 메서드 및 스태틱 메서드

  • reversed()
  • thenComparing()
  • (static) reverseOrder()  / naturalOrder()
  • (static) nullsFirst() / nullsLast()
  • (static) comparing()
       ArrayList<String> strList3 = new ArrayList<>();
        strList3.add("test1");
        strList3.add("tEst2");
        strList3.add("teSt3");
        strList3.add("TEST3");
        strList3.add("TesT4");

        // compareToIgnoreCase - 대소문자 무시
        strList3.sort(String::compareToIgnoreCase);
        strList3.forEach(System.out::println);
        
        System.out.println("=============================");
        
        Comparator<String> compareToIgnoreCase = String::compareToIgnoreCase;
        strList3.sort(compareToIgnoreCase.reversed());
        strList3.forEach(System.out::println);

//        출력
//        test1
//        tEst2
//        teSt3
//        TEST3
//        TesT4
//        =============================
//        TesT4
//        teSt3
//        TEST3
//        tEst2
//        test1

 

참고

https://docs.oracle.com/javase/8/docs/api/java/util/Spliterator.html https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html

 

 

 

 

더 자바, Java 8 - 인프런

자바 8에 추가된 기능들은 자바가 제공하는 API는 물론이고 스프링 같은 제 3의 라이브러리 및 프레임워크에서도 널리 사용되고 있습니다. 이 시대의 자바 개발자라면 반드시 알아야 합니다. 이

www.inflearn.com

 

'기록 > JAVA' 카테고리의 다른 글

[JAVA8] Stream API 사용 예제  (0) 2021.01.10
[JAVA8] Stream  (0) 2021.01.10
[JAVA8] 인터페이스 기본 메서드와 스태틱 메서드  (0) 2021.01.10
[JAVA8] 메서드 레퍼런스  (0) 2021.01.10
[JAVA8] 람다 표현식  (0) 2021.01.10