[자바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
댓글 없음:
댓글 쓰기