티스토리 뷰

 

1. Iterable의 기본 메소드 - forEach, spliterator

package java8study;

import java.util.ArrayList;
import java.util.List;
import java.util.Spliterator;

public class App2 {

    public static void main(String[] args) {
       List<String> myCuteBoys = new ArrayList<>();
       myCuteBoys.add("JooYeon");
       myCuteBoys.add("HyunJae");
       myCuteBoys.add("MinGyu");
       myCuteBoys.add("JeongHan");
       myCuteBoys.add("JaeMin");


       System.out.println("----------------Iterator------------------");
        //Iterator
        Iterator<String> list = myCuteBoys.iterator();
        while (list.hasNext()){
            String a = list.next(); //next()읽어올 요소가 남아있는지 확인 true /false
            System.out.println(a);
        }
        System.out.println();
        System.out.println("-----------------기존 for문-----------------");
        //기존 for문
        for(String s : myCuteBoys){
            System.out.println(s);
        }

        System.out.println();
        System.out.println("-----------------forEach-----------------");
       //forEach
        myCuteBoys.forEach(s-> System.out.println(s));

       // :: 메소드 참조
       // myCuteBoys.forEach(System.out::println);


        //spliterator()
        Spliterator<String> spliterator = name.spliterator();
        Spliterator<String> spliterator2 = spliterator.trySplit();

        System.out.println("====== spliterator.tryAdvance() ======");
        while (spliterator.tryAdvance(System.out::println));

        System.out.println("====== spliterator.trySplit() =======");
        while (spliterator2.tryAdvance(System.out::println));
    }
}

 

 

 

1) forEach() : 간단하게 말하면 for문 축약버전

2) spliterator() :

- Iterator랑 비슷한데 쪼개는 기능이 있음

- Iterator은 순환할 때 hasNext()를 사용했는데, spliterator은 tryAdvance() 사용

- trySplit()은 요소들을 두개로 쪼갬(홀수일 경우 2:1로 쪼갬), 순서 보장 안되서 순서가 중요하지 않을때 사용

 

+ 강의에서  spliterator()를 좀 간단하게만 다뤄서 더 찾아봤는데 여기에 잘 설명되어 있당

https://jistol.github.io/java/2019/11/17/spliterator/

 

 

 

 

 

2. Collection의 기본메소드 -removeIf(), stream(), splierator() (stream()은 다음 강의에 자세하게 다룸)

package java8study;

import java.util.ArrayList;
import java.util.List;
import java.util.Spliterator;

public class App2 {

    public static void main(String[] args) {
        List<String> name = new ArrayList<>();
        name.add("Joooooo");
        name.add("Wonnnnn");
        name.add("Jeonggg");
        name.add("Minnnnn");

        //removeIf()
        name.removeIf(s->s.startsWith("J")); /// J로 시작하는거 지워
        System.out.println("====== removeIf() ======" );
        name.forEach(System.out::println);
    }
}

1) removeIf : 람다식으로 조건을 넣어 삭제

 

 

 

 

package java8study;

import java.util.ArrayList;
import java.util.List;
import java.util.Spliterator;
import java.util.stream.Collectors;

public class App2 {

    public static void main(String[] args) {
        List<String> name = new ArrayList<>();
        name.add("Joooooo");
        name.add("Wonnnnn");
        name.add("Jeonggg");
        name.add("Minnnnn");

        long j = name.stream().map(String::toUpperCase)
                .filter(s -> s.startsWith("J"))
                .count();
        System.out.println("J로 시직하는 거 몇 개?"+ j +"개");

        List<String> jList = name.stream().map(String::toUpperCase)
                .filter(s -> s.startsWith("J"))
                .collect(Collectors.toList());
        jList.forEach(System.out::println);
    }
}

2) stream() 간단하게만 구현

- name들을 대문자로 바꿔서 filter로 "J"로 시작하는 문자 갯수와 리스트 출력

- 자세한건 다음 강의

 

 

 

 

 

3. Comparator의 기본메소드 - reversed(), thenComparing()

package java8study;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Spliterator;

public class App2 {

    public static void main(String[] args) {
        List<String> name = new ArrayList<>();
        name.add("Joooooo");
        name.add("Wonnnnn");
        name.add("Jeonggg");
        name.add("Minnnnn");

        // Comparator - 정렬할때 많이 씀
        name.sort(String::compareToIgnoreCase);
        System.out.println("====== compareToIgnoreCase ======");
        name.forEach(System.out::println);

        Comparator<String> compareToIgnoreCase = String::compareToIgnoreCase;
        name.sort(compareToIgnoreCase.reversed());
        System.out.println("====== reversed ======" );
        name.forEach(System.out::println);
        
    }
}

 Comparator - 정렬이 필요할때 많이 사용

*** sort ***

- compareToIgnoreCase : 문자순

- compareToIgnoreCase.reversed() : 문자역순

- thenComparing() : 정렬 조건을 더 줄때

 

 

 

강의 : 인프런 더 자바, Java8

강의가 딥한게 아니라서 그런지 정말 간단하게만 하는 느낌?

 

 

 

'Java' 카테고리의 다른 글

[Java8] CompletableFuture-Concurrent 프로그래밍1. 스레드  (0) 2021.12.07
[Java8] Optional 소개 및 API  (0) 2021.07.18
[Java8] Stream API 예제  (0) 2021.07.10
[Java8] Stream API  (0) 2021.07.10
[Java8] 함수형 인터페이스와 람다  (0) 2021.07.05
댓글
최근에 올라온 글
최근에 달린 댓글
링크
Total
Today
Yesterday