2011-12-24 3 views
0

목록에있는 첫 번째 Node에 대한 포인터가있는 자체 사용자 지정 LinkedList 클래스가 있습니다. 이제 DoublyLinkedList 클래스를 만들어야합니다. DoublyLinkedListLinkedList의 유일한 차이점은 DoublyLinkedListNode 대신 DoubleNode을 사용한다는 것입니다. 내 DoubleNode 클래스는 Node 클래스를 확장합니다.Java에서 LinkedList를 확장하는 DoublyLinkedList 클래스의 올바른 구현은 무엇입니까?

은 무엇입니까?LinkedList을 확장하는 DoublyLinkedList을 올바르게 작성합니까?

항상 DoubleNode 초를 Node 초로 내 보내야합니까? 아니면 내가 누락 된 간단한 방법이 있습니까?

도움 주셔서 감사합니다.

+6

[java.util.LinkedList 클래스] (http://docs.oracle.com/javase/6/docs/api/java/util/LinkedList.html)는 이미 이중 연결 목록을 구현합니다. 왜 당신 자신을 만들고 싶습니까? (숙제입니까?) – ruakh

+1

DoublyLinkedList를 LinkedList의 하위 클래스로 만들지 않는 것이 좋습니다. DoublyLinkedList의 작업은 LinkedList의 작업보다 두 배의 작업이 필요하며, DoubleNode의 작업에 주목했습니다. – toto2

답변

0

글쎄 나는 이것을 스스로 알아낼 수 있었다.

DoublyLinkedList에 대해 변경해야하는 유일한 방법은 add입니다. 여기 내 DoublyLinkedList 추가 방법입니다 :

public void add(Object obj){ 
     DoubleNode newNode = new DoubleNode(obj); 
     newNode.setPrev(getLast()); 
     super.add((Node)newNode); 
    } 

Node에 캐스팅 한 후 new DoubleNode를 생성하고, 나는 같은 대부분의 방법을 유지할 수입니다. DoubleNode의 prev 포인터에 액세스해야하는 경우 필요에 따라 노드를 다운 캐스팅 할 수 있습니다.

0

노드 유형을 LinkedList에 매개 변수화 된 유형으로 사용하십시오. Generics을 사용하십시오.

+0

그렇다면'DoublyLinkedList'는'LinkedList'를 확장하지 않을 것입니다; 또는'LinkedList '는'LinkedList '의 하위 유형이 아닙니다. – ruakh

+0

@ruakh - 그렇습니다. 또 다른 부모 추상 클래스 또는 인터페이스가 도움이 될 것입니다. 그렇지 않으면 LinkedList 구현의 사용자는 항상 매개 변수화 된 유형 (동의 함, 이상적이지 않음)으로 선언해야합니다. – ziesemer

+0

그 점이 내 요점을 어떻게 다루는 지 모르겠습니다. 'LinkedList'와'DoublyLinkedList'가 동일한 제네릭 타입이지만 다른 타입 파라미터 (예를 들어'AbstractLinkedList '을 확장하고'AbstractLinkedList '를 확장 한 경우)의 서브 타입이라면'DoublyLinkedList'는의 하위 타입이 될 수 없습니다. 'LinkedList'. – ruakh

관련 문제