앞서 배열로 Bag를 구현해보았다. (ArrayBag)
배열은 index로 간단히 자료들을 탐색할 수 있는 장점이 있지만 생성했을 때 크기만큼만 데이터를 저장해야한다는 단점이 있다.
또한 배열의 데이터 이동과 복사 등 배열의 데이터를 재구성할 경우에는 새로운 배열을 선언하여 복사해야하는 등 불편한 점이 있다.
(데이터가 순차적으로 존재하므로)
다음과 같이 배열을 생성하면 10개의 데이터만 관리할 수 있다.
이와 같은 단점을 보완하는 방법으로 Node가 있다.
Node의 특징으로는
1. Node 객체에는 연결하는 다음 노드를 저장하는 next(연결부분)와 데이터를 저장하는 value(데이터 부분)이 있다.
2. Node를 이용하면 배열의 단점인 데이터의 갯수가 한정된 문제를 해결할 수 있다.( 단, 컴퓨터의 저장공간이 허락하는 선에서 )
3. 또한 데이터의 재구성이 쉽고 대용량 데이터를 관리하는데 용이하다.
4. 단, 순차적 접근방식은 배열에 비해 데이터 접근 속도가 느리고 구현방법이 까다로운 점은 단점으로 꼽힌다.
|
위에 구현한 Node와 저번 포스팅에서 사용한 ArrayBag를 이용하여 LinkedBag를 구현할 수 있다.
위는 이전의 ArrayBag를 LinkedBag로 바꾼 코드이다.
이 때 자바를 오랜만에 쓰거나 익숙치 않은 사람들의 경우 Node 객체를 생성하지 않고 연결시키려는 경우가 있다. (과거의 나....)
Node도 클래스이므로 반드시 new를 사용하여 생성한 후에 이용하여야 한다!