for문과 for each문의 차이
ArrayList<Integer> al =new ArrayList<Integer>();
al.add(1);
al.add(2);
al.add(3);
al.add(4);
al.add(5);
Integer 값만 받는 ArrayList al을 생성하여 {1,2,3,4,5} 를 배열에 넣어줬다.
이 때 배열 안에 인자값 들을 보기 위해서는 다음과 같이 for문을 사용했는데,
for (int i = 0; i < al.size(); i++) {
System.out.println(i);
}
이 때 일반 for문 , for(초기식 ; 조건식 ; 증감식){
반복 수행할 작업
}
을 사용하여도 상관이 없지만
1. 가독성이 떨어질 수 있고
2. ArrayIndexOutOfBoundException을 만날 수도 있다.
이러한 경우 for each 문을 사용하는데 다음과 같다.
for(int v :al) {
System.out.println(v);
}
for(타입변수 : 배열이나 컨테이너값)
for(int v : al) --> int v = al 배열의 각 요소 값을 순차적으로 v에게 전달한다.
--> al : al은 iterator 즉 배열이나 컨테이너 등 여러 데이터가 담겨져 있는 변수명.
코드가 한결 편안해져서 가독성이 좋아진 걸 볼 수 있다. 하지만 단점이 없는 것은 아니다.
단점으로는 종료 조건과 증감식이 없는 만큼 1씩 증가하는 값과 끝까지 수행하는 것을 조작할 수 없는 단점이 있다.
그리고 한가지 더 배열의 요소를 볼 수 있는 컬렉션이 있는데 그건 바로 [이터레이터] 이다.
Iterator itr= al.iterator(); // 복사제 역할을 담당하는 컬렉션 ( 원본을 훼손시키지 않는 장점이 있다.)
while(itr.hasNext()) { // 다음 데이터 가지고 있니?
System.out.println(itr.next());
[iterator] 는 모든 집합에서 사용이 가능하기 때문에 앞서 말한 [컬렉션] 을 잘 활용하면 개발자들의 실력이 상향평준화되는데 도움이 되고, 통일적인 사용이 가능해져 유지보수에도 도움이 된다.
'개발자노트' 카테고리의 다른 글
Resource를 (클래스 생성없이) JAVA로 불러오기 (FileInputStream) (0) | 2022.06.27 |
---|---|
Resource를 JAVA로 불러오기 (FileInputStream) (0) | 2022.06.27 |
스레드 [Thread] 의 동기화(synchronized) - 티켓팅 예제 (0) | 2022.06.24 |
스레드 [Thread]의 기본사용법 (0) | 2022.06.24 |
스레드[Thread]의 기본원리 (0) | 2022.06.24 |