본문 바로가기

개발언어/Java _ Spring

ArrayList에서 활용할 수 있는 반복문 : for문 / foreach문 / List.forEach()

개요

순서가 있는 List자료형을 순회하며 반복처리하는 작업을 수행하고자 할 때 반복문을 자주 사용한다.

이때 자주 사용하는 세 가지 문법에 대해 개념을 정리해보고자 한다.

해당 포스트는 자바 기초문법에 대한 이해가 있는 사람에게 적합하며 기초적인 내용은 다소 생략된 부분이 있음을 미리 알린다.

 

1. for : 반복문

코드에서의 규정된 횟수의 작업을 반복수행하고자 할 때, 범용적으로 사용하는 문법이다

// 문법  for(초기값 ; 제한값 ; 증감값)
for(int i = 0; i<loop.size; i++){
	// 반복수행하고자 하는 코드
}

 

2. foreach: 반복문_확장 for문

Java5.0 이후부터 사용가능한 문법 '확장 for문'으로도 통용되는 foreach문은

반복 횟수를 제한하거나, 값을 가져다 사용할 뿐, 수정이 불가하고 증감값을 조정할 수 없는 단점에도 불구하고

직관적이고 간단한 문법과 ArrayList를 순회하며 반복수행하는 작업에 사용할 적합한 기능을 수행한다 

// for(타입 변수명 : 컬렉션){
for(Map<String, Object> reqGrp : reqList){
    // Map<String, Object>의 자료형 reqGrp 변수가 reqList의 끝 인덱스까지 순회하며 반복한다
    // 반복 수행하고자 하는 코드,  예)
   reqGrp.putAll(input);
}

 

3. List.forEach()

List.forEach()는 목록의 요소를 반복하고 특정 작업을 수행하는 간결한 방법을 제공한다.

기존의 for문에 비해 가독성이 뛰어나고 유지보수측면에서 좋은 문법이다. 

하지만 foreach문처럼 증감값을 조절하거나 목록의 요소를 수정하는 방법에는 제한적인 단점이 있다. 

2) foreach와 유사해보이지만 문법적으로 구분되어지는 점은

반복순회하는 변수의 자료형을 명시해주지 않아도 된다는 점에 있다.

// collection.forEach(변수->반복처리(변수))
list.forEach(s -> System.out.println(s));

이것을 좀더 활용한다면

//컬렉션.forEach(변수->{반복수행할 코드})
reqList.forEach(adm -> {
        Map<String,Object> reqAdmInfo= new HashMap<>();
        reqAdmInfo.put("coCd",adm.getCoCd());
        reqAdmInfo.put("DB_ERP", dbErp);

        Map<String, String> neosInfo = commonMapper.getNeosSeqInfo(reqAdmInfo);
        reqAdmInfo.put("grpSeq", neosInfo.get("grpSeq"));
        reqAdmInfo.put("empSeq", neosInfo.get("empSeq"));
        reqAdmInfoList.add(reqAdmInfo);
            }

 


결론

순서가 있는 List자료형의 경우 다양한 방법으로 반복문을 처리할 수 있다.

일정한 규칙에 의해 작업을 반복처리한다는 기능적 측면에서는 동일하지만

수행하고자 하는 작업의 내용에 따라 관련 문법을 선택적으로 사용하는 것이

코드의 가독성을 높이고 성능을 향상할 수 있다.