학부에서 코딩을 하는게 아닌, 현업에서 개발을 하다보니 for문보다는 for-each문을 더 자주 사용하게 되었는데, 내가 for-each문에 대해 잘 알고쓰는게 아닌 것 같아서 간단하게나마 정리해보고자한다.
먼저 for-each문은 Java5에서 추가되었고, 기존 for문과는 다르게 반복문 안의 요소에 직관적으로 접근할 수 있게 되었다. 기존 for문과의 차이점을 코드로보자면 다음과 같다.
1
2
3
4
5
6
7
8
9
10
11
12
|
//main.....
public void loop() {
String []array = new String[]{"1", "2", "3", "4"};
for(int i = 0; i < array.length; i++) { //기존 반복문
System.out.println(array[i]);
}
for(String item : array) { // 향상된 반복문(for-each)
System.out.println(item);
}
}
|
cs |
array를 순회할 때는 차이를 별로 느끼지 못하겠지만, List<Object>일 경우에는 가독성면에서 차이를 느낄 수 있다, 이걸 코드로 정리하자면 다음과 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
/*
* Member클래스는 Emp클래스를 참조하고있다
* public class Member {
* String name;
* Integer age;
* Emp emp;
* .....
* }
*/
public void objectLoop(List<Member> members) {
for (int i = 0; i < members.size(); i++) { // 기존 for문
System.out.println(members.get(i).getEmp().get(i).getName());
}
for (Member item : members) { // 향상된 for문(for-each)
System.out.println(item.getEmp().getName());
}
members.foreach(data -> System.out.println(data.getEmp().getName()); // 람다식을 이용해 표현
}
|
cs |
위 코드를 보면 알 수있듯이, List안의 원소가 객체일 경우에는 일반 for문의 경우 코드가 늘어지는 경향이 생긴다.
또 java 8에서 추가된 람다식을 이용하면 더 심플하게 표현할 수 있다. java 8에서 추갇된 재미있는 기능들이 많으니 공부를 해보면 좋을 것 같다.
for-each문을 사용하게 되면 index를 사용할 수 없는데, index가 필요한 경우에는 원시적으로 다음과 같이 사용하면 될 것 같다.
1 2 3 4 5 6 7 | // ..... int index = 0; for (Member item : members) { // 향상된 for문(for-each) System.out.println(item.getEmp().getName() + index); index++; } | cs |
'JAVA' 카테고리의 다른 글
JAVA에서 ..parameter???? (가변인자) (0) | 2020.08.25 |
---|---|
HttpResponse와 Unirest를 이용한 외부 데이터 요청 (0) | 2020.06.17 |
JAVA 문자열 자르기 2 (substring 사용법) (0) | 2020.06.02 |
JAVA 문자열 자르기(split) (0) | 2020.04.17 |
JAVA 문자열 치환(replace ) 사용법 정리 (0) | 2020.03.25 |