인프런 커뮤니티 질문&답변

동형님의 프로필 이미지
동형

작성한 질문수

김영한의 실전 자바 - 중급 2편

문제와 풀이2 - Map2

장바구니 minus 질문있습니다!

해결된 질문

작성

·

185

·

수정됨

1

public void minus(Product product, Integer minusQuantity) {

        Integer quantity1 = cartMap.get(product);
        int newQuantity = quantity1 - minusQuantity;
    if (newQuantity <= 0) {
        cartMap.remove(product);
    } else {
        cartMap.put(product, newQuantity);
    }

}

 정말 기본적인 질문인거같은데 이해가 안돼서 질문드립니다 

저 else문을 안쓰고 그냥 put하면 수량은 0이 되는데 키가 지워지지 않더라구요 근데 else문을 사용하니까 키가 사라지는데 무슨 차이일까요 ㅠㅠ remove는 이미 if문에서 실행이 돼야되는거 아닌가요

답변 1

2

안녕하세요. 동형님, 공식 서포터즈 OMG입니다.

else문을 안쓰셨다는 코드가 아래와 같은 코드가 맞을까요?

if (newQuantity <= 0) { 
    cartMap.remove(product); 
} 
cartMap.put(product, newQuantity);

그렇다면 키가 지워지지 않는 것은 당연합니다.

if 조건에 포함되건 포함되지 않는건 put으로 계속 map에 데이터를 최신화 하기 때문입니다.

 

질문에 올리신 코드와 같은 경우에는 0보다 같거나 작을 경우에는 무조건 remove를 하지만

0보다 큰 경우에만 put을 하게 됩니다.(키가 지워지지 않겠죠?)

 

감사합니다.

동형님의 프로필 이미지
동형
질문자

감사합니다!

 

동형님의 프로필 이미지
동형

작성한 질문수

질문하기