Java11 [ Java ] Map getOrDefault Null-Safe하게 값을 가져오는 법 Map의 getOrDefault 사용하면 null-safe 하게 값을 가져올 수 있다고 생각했는데 HashMap 사용할 경우 override 되어 key의 value가 null인 경우 그대로 null로 리턴된다. Map map = new HashMap(); map.put("a", null); // NullPointerException String s1 = map.getOrDefault("a", 1).toString(); // Null-Safe String s2 = Optional.ofNullable(map.get("a")).orElse("").toString(); 따라서 HashMap 사용할 경우 getOrDefault 보다 Optional 함수를 사용하는 것이 좋다. 2023. 11. 13. [ JAVA ] synchronized VS Reentrant Lock synchronized과 Reentrant Lock 차이점 synchronized 쓰레드 진입권 획득 순서 보장 안됨 개발자의 실수로 lock 해지하지 않는 경우 없음 코드 간결하게 사용 가능 Lock 어떤 쓰레드가 먼저 락을 획득하게 될지 순서 지정 가능 인스턴스에 한개 이상의 condition 지정 가능 ex) lockInterruptibly(), tryLock() lock 기다리고 있는 쓰레드 목록 간편하게 확인 가능 2023. 8. 14. [ JAVA ] 자바에서 몽고 ISODate 필드 쿼리 (MongoDB ISODate field search using Java) LocalDate targetDate = LocalDate.of(2023, 1, 1); // 몽고는 UTC 기준이기 때문에 타임존 맞춰줌 TimeZone.setDefault(TimeZone.getTimeZone("UTC")); // {"date": {$gte: ISODate('2023-01-01T00:00:00.000Z')}} Bson query = Filters.gte("date", Date.from(Date.from(parameter.getLocalStartDate().atStartOfDay().atZone(ZoneId.systemDefault()).toInstant())); 2023. 6. 7. java.util.NoSuchElementException: No value present 자바에서 get()을 사용할때 값이 없을 경우 발생하는 에러 해결방법 : get()하기 전에 isPresent() 사용해 값을 체크해주면 된다. 2022. 12. 12. 이전 1 2 3 다음 반응형