uju's Tech

[Java 8: forEach] HashMap 에 넣은 value를 반복문으로 가져오고싶다! 본문

Programming/Java 이모저모

[Java 8: forEach] HashMap 에 넣은 value를 반복문으로 가져오고싶다!

ujusy 2020. 6. 13. 03:33

<본 포스팅은 공부목적으로 작성되었습니다. 혹시 틀린 부분이 있거나 문제가 되는 부분이 있다면 답글 달아주세요!>

 

최근 개발을 하던 중 막히는 부분이 발생하였다.  자바 초짜로서 막혔던 부분을 포스팅 해보고자 한다.

 

HahMap<String, String> fileNameMap = HashMap<>();

 

 fileNameMap 의 Key는 파일 생성된시간의 범위의 시작 시간. value는 파일 명으로 들어가는 map을 구현하였다.

 

구현해야 하는 내용이 생성됭있는 파일들을 wirte 해주기 위해  filenameMap의 key값을 알아서 file의 이름을 가져와야 하는 상황이었다.

 

들어올 수 있는 시간이 60분으로 제한되었으므로 00, 10, 20, 30, 40 , 50 최대 6가지 결과물이 나온다는 것을 알고있으나 if-esle문으로 

 

이용하는 것은 코드가 간결하지 못할 뿐더러 동적으로 시간 처리 및 파일 생성 개수에 대한 처리가 불가능하다.

 

 

이를 어떻게 해결할 수 있을까?

 


이러한 경우 Java 8에 추가된 forEach문을 사용할 수 있을 것이라고 생각이된다.

 

기존의 for-1oop를 살펴보자.

 

for (String name: names){

system.out.println(name);

}

for (String name: names){

system.out.println(name);

}

forEach문을 사용하면

 

names.forEach(name -> {

    System.out.println(name);
    
});

 

forEach문을 사용하면 다는 iterator은 필요가 없다.  더 편리하다고 생각되어 앞으로도 애용(?)할 것 같다.

 

 

forEach문이 나옴으로서 고민이 해결되었다.

fileNameMap.forEach((key, value) -> {

    -------
    
});

 

iterator을 더 만들 필요가 없고 key혹은 value를 명시적으로 알 수 없어도 반복문을 사용할 수 있게 되었다.

Comments