목록Programing & Coding (86)
S E P H ' S
HashSet, LinkedHashSet과 같이 해시 개념을 접목한 자료구조들에 대해서 알아보고 해시충돌과 같은 개념 또한 살펴보았다. 이번 포스트에서는 HashTable, HashMap에 대해서 알아볼 것이다. 추가적으로 해시 충돌 포스트에서 이를 해결하기 위한 여러 방법들이 있었는데 이 또한 더 자세히 알아보도록 하자. 그리고 자료구조 파트의 포스트가 매우 많기 때문에 이쯤에서 한번 [Java] 4. Collection (List, Map, Set) 포스트에서 전체적인 자료구조 흐름을 짚고 넘어오면 좋을 것 같다. HashTable, HashMap 두 자료구조 모두 공통된 특징을 갖고 있고 사용법도 유사하다. 둘 다 Map 인터페이스를 구현하고 있기 때문이다. Key, Value 구조로 데이터를 저장..
Spring 애플리케이션을 개발하면서 JPA를 선택하는 이유가 무엇일까? MyBatis로도 DB를 쉽게 다루고 동적 쿼리를 작성할 수 있는데 말이다. 이에 대해서는 먼저 ORM에 대해 이해하는 것이 필요하다. ORM ORM(Object Relational Mapping)을 직역하면 객체 관계 매핑이다. 말그대로 객체의 관계를 매핑한다는 말이다. 무엇을 매핑하는 것일까? 우리는 Spring, 즉 Java 코드를 작성할때, 객체 지향 프로그래밍으로 코드를 작성한다. (최대한..) 객체 지향 프로그래밍에서는 하나의 객체가 자신의 역할을 준수하며 책임을 다하고 메시지를 기반으로 여러 객체들과의 협력을 이뤄내면서 작동한다. 관계형 데이터베이스는 테이블을 사용한다. 객체 지향 프로그래밍의 객체 모델과 관계형 데이터..
인터페이스(Interface)와 추상클래스(Abstract Class)의 차이점 추상 클래스는 클래스 내에 하나 이상의 추상 메소드를 포함하거나 abstract로 정의된 클래스를 말하고 인터페이스는 모든 메소드가 추상 메소드인 경우이다. (Java 8에서는 default 키워드를 사용해 일반 메소드의 구현도 가능함) 두 개념의 차이는 명확하다. 생김새도 다르고 사용방법도 다르다. 그러나 역할이 비슷하여 혼동이 많이 오기도 한다. 추상클래스와 인터페이스 모두 상속받는 클래스 혹은 구현하는 구현체가 추상 메소드를 구현하도록 강제한다. 이렇게 보면 추상 클래스에 추상 메소드를 여러개 두거나 전부 추상 메소드만 두면 될 것 같은데 인터페이스가 존재하는 이유는 무엇일까? 비슷해보이지만 두 개념의 목적을 자세히 짚..
HashSet, LinkedHashSet 다음에 다루려던 것이 TreeSet이었는데 TreeSet이 내부적으로 Red-Black Tree로 구현되어있다. 그런데 또 Red-Black Tree를 이해하려면 BST(Binary Search Tree)도 이해해야 하고 결과적으로 TreeSet을 알아보기 전에 Tree 에 대한 개념과 이해를 선행해야겠다는 생각이 들었다. 그래서 트리에 대해 전반적으로 알아보고 차례대로 Tree 종류들을 알아보고 TreeSet을 다뤄보도록 할 것이다. Tree 트리는 비선형구조이다. 일반적으로 대상 정보의 각 항목들을 계층적으로 연관되도록 구조화 시키고자 할 때 사용되는 자료구조이다. 데이터의 요소들이 단순한 나열이 아닌 부모 - 자식 관계의 계층적 구조로 표현된다. 아래 이미지..