본문 바로가기

IT 관련/java

Map for문 돌리기 - How to loop a Map in Java [JAVA]

안녕하세요

초이스40입니다.

 

오늘은 자바의 Map을 이용해서 loop를 돌리는 방법 4가지를 정리할까 합니다.

개발을 하다 보면 조건문과 반복문이 거의 주를 이루는 경우가 많은데요

실제로 많이 쓰이죠,,,

자바에서는 Map에 담은 데이터를 이용해서 loop를 실행해야 할 때가 많이 있습니다.

그래서 이번에 loop를 실행하는 방법 네 가지에 대해서 아래와 같이 정리합니다.

본인이 개발하는 프로세스에서 적절한 방법을 찾아서 사용하면 되겠습니다.

 

1. Iterator를 이용한 while 문 이용하는 방식

Iterator<String> keys = mapData.keySet().iterator();
while( keys.hasNext() ){
String key = keys.next();
System.out.println( String.format("키 : %s, 값 : %s", key, mapData.get(key)) );
}
System.out.println("=========================================================");

2. entrySet을 이용하여 loop를 돌리는 방식

for( Map.Entry<String, String> elem : mapData.entrySet() ){
    System.out.println( String.format("키 : %s, 값 : %s", elem.getKey(), elem.getValue()) );
}
System.out.println("=========================================================");

3. keySet을 이용하는 loop를 돌리는 방식

for( String key : mapData.keySet() ){
    System.out.println( String.format("키 : %s, 값 : %s", key, mapData.get(key)) );
}
System.out.println("=========================================================");

4. lamda 식을 이용한 loop(Java 1.8부터 가능)

mapData.forEach((key, value)->{
    System.out.println( String.format("키 -> %s, 값 -> %s", key, value) );
});

 

실행 결과

키 : mapData 키6, 값 : mapData 값6
키 : mapData 키3, 값 : mapData 값3
키 : mapData 키2, 값 : mapData 값2
키 : mapData 키5, 값 : mapData 값5
키 : mapData 키4, 값 : mapData 값4
키 : mapData 키1, 값 : mapData 값1
============================================================
키 : mapData 키6, 값 : mapData 값6
키 : mapData 키3, 값 : mapData 값3
키 : mapData 키2, 값 : mapData 값2
키 : mapData 키5, 값 : mapData 값5
키 : mapData 키4, 값 : mapData 값4
키 : mapData 키1, 값 : mapData 값1
============================================================
키 : mapData 키6, 값 : mapData 값6
키 : mapData 키3, 값 : mapData 값3
키 : mapData 키2, 값 : mapData 값2
키 : mapData 키5, 값 : mapData 값5
키 : mapData 키4, 값 : mapData 값4
키 : mapData 키1, 값 : mapData 값1
============================================================
키 -> mapData 키6, 값 -> mapData 값6
키 -> mapData 키3, 값 -> mapData 값3
키 -> mapData 키2, 값 -> mapData 값2
키 -> mapData 키5, 값 -> mapData 값5
키 -> mapData 키4, 값 -> mapData 값4
키 -> mapData 키1, 값 -> mapData 값1

 

데이터 결과는 같습니다.

각자 본인의 프로세스에 맞는 loop문을 이용하면 됩니다.

개인적으로 소스는 심플한게 제일 좋다는 이야기를 많이 합니다.

저 역시도 그렇습니다.

 

개인적으로 lamda 식으로 표현된 식이 심플해 보입니다.

하지만 저는 lamda 식을 추천하지는 않습니다.

심플하게 코딩하라는 의미는 결국은 가독성을 높이고 다른 사람이 봤을 때

이해가 쉽기 때문에 심플하게 코딩하라는 것인데요

람다식은 표현은 쉽지만 오류가 발생하였을 때 디버깅이 힘들다는 단점이 있습니다.

 

보기에 화려하고 있어 보이는 코딩보다 실제 진행하는 프로세스에 적합하고 심플하면서도

업무 효율을 생각한 코딩이 좋은 코딩이라고 생각합니다.

 

모두 즐거운 코딩하시기 바랍니다.

 

그럼 이만

감사합니다.