로직과의 사투/Java

    POJO(Plain Old Java Object) 필수 값 Check Annotation 만들기

    개요 // 현재 운영 서비스에 적용되어 있는 극단적인 예시 // if문 지옥 if (!lSomeStringField.equalsIgnoreCase(SomeCase) && !lSomeStringField.equalsIgnoreCase(SomeCase) && !lSomeStringField.equalsIgnoreCase(SomeCase) && !lSomeStringField.equalsIgnoreCase(SomeCase) && !lSomeStringField.equalsIgnoreCase(SomeCase) && !lSomeStringField.equalsIgnoreCase(SomeCase) && !lSom..

    자바의 자료구조 Collection Framework (2) - List

    Java의 Collection 구현체 중 List 인터페이스는 배열과 비슷한 형태의 자료구조이며 다양한 메소드들을 가지고 있다. List인터페이스를 구현한 자료형 중에는 대표적으로 ArrayList와 LinkedList가 존재하는데 오늘은 중점적으로 이 두 가지 List구현체들을 알아보고자 한다. 참고할 점은 두 구현체 모두 내부적으로 구현만 다를뿐 개발자가 실제 사용하는 메소드 사용법에는 큰 차이가 없다. 그러나 내부적으로 다른 구현으로 인해 각 상황마다 성능 차이가 생길 수 있기 때문에 두 구현체 중 어느 것을 선택할 지는 전적으로 개발자의 몫이다. 1. ArrayList ArrayList는 내부적으로 배열을 이용해 구현되어있다. 일반 배열과 동일하게 연속된 메모리 공간을 사용한다. 일반 배열과의 차..

    자바의 자료구조 Collection Framework (1) - Map

    자바를 매일 같이 사용하면서 매번 자연스럽게 가져다 쓰는 자료구조 중 하나가 바로 Map 자료 구조이다. Java는 JDK 1.2 이후 버전부터 Collection Framework를 추가했다. Collection Framwork의 추가로 편하게 사용할 수 있는 인터페이스 및 구현된 클래스들이 제공되게 되었으며 그 중 하나가 오늘 글을 쓰게된 Map이다. 1. Map의 개요 Map인터페이스는 키와 값을 하나의 쌍으로 묶어서 저장하는 컬랙션 클래스를 구현하는 데 사용된다. 키의 중복은 허용하지 않지만 다른 키를 가지는 같은 값은 허용된다. Java의 Map 인터페이스를 구현한 클래스로는 대표적으로 HashMap, LinkedHashMap, TreeMap 등이 있다. 2. HashMap Java의 HashM..

    월요일 기준으로 주차 구하기 java.time

    무조건 월요일 기준으로 주차 구하기. 현재 진행중인 프로젝트에서 date와 관련된 데이터를 다루는 일이 많다. 웬만하면 Java8 Time API의 기본적인 Methods 로 해결 가능한 경우가 많지만, 계산이 필요한 경우도 더러 있다. 특히 가장 골머리를 썩이게 만든 부분은 몇 주차 계산 이었다. Java8의 Time API에서도 ChronoField의 ALIGNED_WEEK_OF_MONTH를 이용해 손 쉽게 몇 주차인지 알 수 있지만 현재 프로젝트의 요구사항과 맞지 않는 값이었다. 왜 그러한가 찾아보았더니 생각보다 쉽지 않다는걸 깨달았다. 주차를 나누는 국제 표준인 ISO 8601 에서 정하길, 주차를 나누는 기준은 그 주의 시작이 목요일 이후냐 아니냐 (한국 국가기술표준원에선 이를 '어떤 월의 날짜..