2014년 7월 31일 목요일

[자바8 컬렉션 탐색하기,for, forEach, iterator, 더블콜론연산자,Consumer등이용한 예제]

[자바8 컬렉션 탐색하기,for, forEach, iterator, 더블콜론연산자,Consumer등이용한 예제]

개발하다보면 컬렉션(List, Set, 배열등)에 넣은 값들을 많이 사용하는데...
아래 여러 방법으로 출력하는 예제를 참고하자.

package onj;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.function.Consumer;
import java.lang.Integer;

//Consumer implementation that can be reused
class OnJConsumer implements Consumer<Integer>{
  public void accept(Integer i) {
      System.out.println("Consumer impl i :: " + i);
  }
public class ForEachTest { 
    public static void main(String[] args) {
         
        List<Integer> myList = new ArrayList<Integer>();
        for(int i=0; i<5; i++) myList.add(i);

        //반복자를 얻어 Collection을 순회
        Iterator<Integer> iter = myList.iterator();
        while(iter.hasNext()){
            Integer i = iter.next();
            System.out.println("i ::" + i );
        }
        
        //개선된 for문으로
        for(int i : myList) {
        System.out.println("개선된 for문 i :: " + i );
        }
         
        //이번에는 forEach문을 이용하자. Consumer는 자바에서 제공하는 함수형 인터페이스이다.
        //파라미터를 받아서 void형 accept 메소드 구현
        myList.forEach(new Consumer<Integer>() { 
            public void accept(Integer i) {
                System.out.println("forEach i :: " + i );
            } 
        });
         
        //Consumer인터페이스를 구현한 클래스를 new후 forEach에 사용
        OnJConsumer action = new OnJConsumer();
        myList.forEach(action);
        
        //이번에는 forEach 람다식으로...
        myList.forEach( (i) -> System.out.println("람다식 i ::" + i ) );
        
        //이번에는 forEach 더블콜론 연산자로...
        System.out.println("--------------");
        myList.forEach(System.out::println);        
    } 
}


[결과]

i ::0
i ::1
i ::2
i ::3
i ::4
개선된 for문 i :: 0
개선된 for문 i :: 1
개선된 for문 i :: 2
개선된 for문 i :: 3
개선된 for문 i :: 4
forEach i :: 0
forEach i :: 1
forEach i :: 2
forEach i :: 3
forEach i :: 4
Consumer impl i :: 0
Consumer impl i :: 1
Consumer impl i :: 2
Consumer impl i :: 3
Consumer impl i :: 4
람다식 i ::0
람다식 i ::1
람다식 i ::2
람다식 i ::3
람다식 i ::4
--------------
0
1
2
3
4

댓글 없음:

댓글 쓰기