TIL:) Map Key값, Value값 가져오기

😃 Today I Leaned

  • 키오스크 만들기
    • 필수 기능 구현
    • 추가 기능 구현

키오스크 만들기

https://github.com/kimnahyeong2/kiosk.


⭐알게 된 점⭐

Map Key값, Value값 가져오기

- entrySet() : Key와 Value 동시에 가져올 수 있음

        for(Map.Entry<Product, Integer> product : myCartList.entrySet()){
            System.out.println(product.getKey() + " | " + product.getValue());
        }

- keySet() : Key만 가져올 수 있음

 

BigDecimal

- 소수점을 계산할 때 계산값이 기대와는 다르게 나와 방법을 찾던중

  거의 무한한 정밀도를 보장하는 BigDecimal을 알게 되어 정밀한 값을 가져오기 위해 사용

- 단점은 느린 속도와 기본 타입보다 사용법이 불편하다는 점이다.

BigDecimal totalPrice = new BigDecimal(String.valueOf(0));

- 초기화를 할 때 문자열의 형태로 생성자에 전달하여 초기화하는 것이 가장 안전함

BigDecimal a = new BigDecimal("10");
BigDecimal b = new BigDecimal("3");

a.add(b);
a.subtract(b);
a.multiply(b);
a.divide(b);
a.divide(b, 3, RoundingMode.HALF_EVEN);

// 나누기 후 나머지
// 전체 자리수를 34개로 제한
a.remainder(b, MathContext.DECIMAL128);

// 절대값
new BigDecimal("-3").abs();

a.min(b);

a.max(b);

- 다시 형변환을 하고 싶을 경우, 아래와 같이 변환할 수 있음

double doubleVal=bigDecimal.doubleValue();

 

2개의 HashMap 합치기

map1.putAll(map2);
map2.forEach((key, value) -> map1.merge(key, value, (v1, v2) -> v2));

- map1과 map2의 key값이 같을 경우 map2의 value로 변경됨

 

ConcurrentModificationException

- HashMap을 for문을 이용해 겹치는 값들을 변경하고 삭제하는 과정에서 마주친 오류이다

- HashMap을 순회하면서 remove로 요소를 삭제할 때 나타나는 오류라고 한다.

- 삭제하고 싶은 요소를 List에 담아둔 후, remove()를 이용해 HashMap에서 요소를 삭제해주었다.


🐰 END

기본기능과 추가기능을 모두 마쳤다!

하지만 코드의 효율성이 좋지 않은 것 같아

내일은 코드의 효율성을 개선하는 것이 목표이다.

BELATED ARTICLES

more