목록Programing & Coding (86)
S E P H ' S
Singly LinkedList ArrayList와 가장 큰 차이점은 '노드'라는 객체를 이용하여 연결하는 것. ArrayList의 경우 최상위 타입인 Object[] 을 사용하여 데이터를 담았다면 LinkedList는 배열을 이용하는 것이 아닌 하나의 객체를 두고 그 안에 데이터와 다른 노드를 가리키는 레퍼런스 데이터로 구성하여 여러 노드를 하나의 체인처럼 연결하는 것이다. Node 데이터와 다른 노드를 가리키는 주소데이터를 담을 객체 LinkedList의 가장 기초적 단위 배열과 LinkedList의 구조 비교 위 그림에서 보면 각각의 레퍼런스 변수는 다음 노드 객체를 가리키고 있다. 이렇게 단방향으로 연결된 리스트를 Singly LinkedList라고 한다. 한 마디로 노드들을 연결시킨 형태가 바로..
ArrayList ArrayList는 다른 자료구조와 달리 Object[] 배열, 즉 객체 배열을 두고 사용한다. 모든 자료구조는 '동적 할당'을 전제로 한다. 동적 할당을 안하고 사이즈를 정해놓고 구현한다면 메인함수에서 정적 배열을 선언하는 것과 차이가 없다. 데이터의 개수를 알 수 없는데 배열을 쓰고 싶을 때 ArrayList, LinkedList 등의 자료구조를 선택한다. 데이터 사이에 빈 공간을 허락하지 않는다. 항상 리스트 계열 자료구조는 데이터들이 '연속적'이어야 한다. ArrayList 구현 클래스 및 생성자 구성 resize 메소드 구현 add 메소드 구현 get, set, indexOf, contains 메소드 구현 remove 메소드 구현 size, isEmpty, clear 메소드 구..
자료구조란? 프로그램에서 사용할 많은 데이터를 메모리 상에서 관리하는 여러 구현 방법들이다. 효율적인 자료구조가 성능 좋은 알고리즘의 기반이 된다. 데이터의 효율적인 관리는 프로그램의 수행속도와 밀접한 관련이 있다. 여러 자료 구조 중에서 구현하려는 프로그램에 맞는 최적의 자료구조를 활용해야 하므로 자료구조에 대한 이해가 중요하다. List Interface 자바 컬렉션 프레임워크(Collection(List, Map, Set), Collection(Stack, Queue))에서 지원하는 ArrayList, LinkedList 같은 리스트 클래스들은 우리가 조금더 데이터들을 다루기 쉽도록 메소드들을 구현한 것이다. 공통점 동일한 특성의 데이터들을 묶는다. 반복문 내에 변수를 이용하여 하나의 묶음 데이터들..
방문자(Visitor) 패턴 방문자 패턴이란? 방문자와 방문 공간을 분리하여, 방문 공간이 방문자가 맞이할 때, 이후에 대한 행동을 방문자에게 위임하는 패턴 알고리즘을 객체구조에서 분리시키는 디자인 패턴이다. OCP(계방-폐쇄) 원칙을 적용하는 방법 중 하나이며 구조를 수정하지 않고도 실질적으로 새로운 동작을 기존의 객체 구조에 추가할 수 있게 된다. 언제 사용할까? 자료 구조(데이터)와 자료 구조를 처리하는 로직을 분리해야 할 때 데이터 구조보다 로직이 더 자주 변경될 때 구조 Visitor : 데이터 구조 내 각각의 구체적 요소에 visit 메소드를 선언 ConcreteVisitor : Visitor 인터페이스를 구현하고, ConcreteAdapter 역할을 처리 Acceptor : Visitor 역..