Java

    EnumMap 살펴보기

    EnumMap EnumMap 클래스는 Map 구현체 중 Enum type 을 키로 사용하는 클래스입니다. HashMap 과 비교해봤을 때, EnumMap은 성능상의 이점을 노릴 수 있습니다. 그 이유를 살펴보겠습니다. 데이터 저장과정 생성자로 key type(enum) 을 넘겨주면, enum 에 정의된 열거형 상수의 개수만큼 내부적으로 Object 배열을 생성합니다. 따라서 null 을 허용하지 않습니다. 하지만 get 이나 remove 를 호출할때 null 을 넣어도 예외를 발생시키지 않습니다. public enum NumberEnum { ONE, TWO, THREE } class EnumTest { @Test void enum_test() { Map map = new HashMap(); map.put..

    PriorityQueue 살펴보기

    공부하게 된 계기 PriorityQueue를 꽤나 자주 사용하지만, 우선순위로 정렬하여 결과를 보여준다라고만 생각하고 있었습니다. 우선순위로 정렬을 하니, 전형적인 큐의 특성만 생각하여 넣을때마다 선형적으로 정렬되어 들어있을거라고 막연히 생각했었습니다. 최근에 알고리즘 문제를 풀며 PriorityQueue를 쓰게 되었는 데, 디버깅 과정에서 예상과는 다르게 정렬되어 있지 않은 것을 발견하고 왜 그런가를 확인해보게 되었습니다. public class Person { private int age; private String name; public Person(int age, String name) { this.age = age; this.name = name; } public int getAge() { re..

    정렬을 돕는 Comparable, Comparator

    자바에는 정렬을 도와주는 인터페이스인 Comparable, Comparator 가 있습니다.Collection 을 통해 정렬을 간편히 수행할 수 있는 데, Comparable 이나 Comparator 를 구현하는 구현체이거나 람다를 이용하여 정렬방법을 구현해야 합니다. primitive 타입 배열과 같은 것들은 자연스러운 순서로 정렬이 됩니다.(Arrays.sort 는 DualPivotQuicksort 라는 알고리즘을 사용합니다.) Comparable Comparable 은 일반적으로 생각할 수 있는 정렬을 정의할 때 구현하는 인터페이스입니다. (물론, 꼭 그럴 이유는 없습니다만 JavaDoc 의 주석으로 되어있으므로, 일반적인 용례를 생각하면 그에 따르는 것이 혼란을 줄일 수 있습니다.) Compara..

    resource file 읽기

    1234567891011121314public class Test { private static Properties properties; static { properties = new Properties(); try { Reader reader = Resources.getResourceAsReader("config_properties.properties"); properties.load(reader); } catch (IOException e) { logger.error(e.getMessage(), e); } } private static final String PATH = properties.getProperty("filePath");}Colored by Color Scriptercs resource를..

    eclipse task tag 사용(TODO)

    eclipse에서 자바 개발 시 당장 구현하지 않거나 리팩토링이 필요한, 다시 한번 봐야될 필요가 있는 부분을 마킹해둘 수 있다.task tag를 사용하여 표시한다. WINDOW -> Preferences -> Java -> Compiler -> Task Tags 원하는 태그를 추가할 수도 있다. 27라인과 같이 표시가 생긴다. 이제까지 표시한 전체 task tag를 확인하고 싶으면Window -> Show View -> Tasks를 선택한다.