😃 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
기본기능과 추가기능을 모두 마쳤다!
하지만 코드의 효율성이 좋지 않은 것 같아
내일은 코드의 효율성을 개선하는 것이 목표이다.