2013-02-27 4 views
3

자바로 된 객체로 링크 된 목록 (일반 컨테이너)을 만들었습니다. 키로 알파벳순으로 목록을 정렬하려면 insert-method를 다시 작성해야합니다. 이것은 지금까지 내 코드입니다 :자바에서 객체로 연결된 목록을 정렬하는 방법

컨테이너 :

class Sellbeholder<N extends Comparable<N>, V> implements INF1010samling<N,V> { 

private Keeper første; 
private int ant = 0; 

private class Keeper { 
    Keeper neste; 
    N n; 
    V v; 

    Keeper(N n,V v) { 
     this.n = n; 
     this.v = v; 
    } 
} 

이 (내가 다시 작성할 필요) 내 삽입 방법 :

public void PutIn(N n, V v) { 
    Keeper kep = new Keeper(n,v); 
    kep.neste = første; 
    første = kep; 
    ant++; 

이것은 사람 객체이며, 내가 ' 컨테이너에 넣는 것 (연결리스트) :

그리고 이것은 사람을 만들어 컨테이너에 넣는 방법입니다.

Sellbeholder <String,Person> b1 = new Sellbeholder <String,Person>(); 
Person a = new Person("William"); 
b1.PutIn("William",a); 

어떤 도움을 주시면 감사하겠습니다. 개체를 넣을 위치를 확인하려면 CompareTo-metohod 사용해야하지만 연결된 목록의 구조를 설정하는 방법을 잘 모르겠습니다. 나는이 시작했습니다

public void PutIn(N n, V v) { 
    Keeper kep = new Keeper(n,v); 
    // you will insert between previous and current 
    Keeper previous = null; 
    Keeper current = første; 

    // loop until you get the right place   
    while (current != null && ((current.n).compareTo(n) > 0)) { 
     previous = current; 
     current = current.neste; 
    } 

    // insert your stuff there (if there were no previous, then this is the first one) 
    if (previous == null) { 
     første = kep; 
    } else { 
     previous.neste = kep; 
    } 

    // Set the next Keeper 
    kep.neste = current; 

    ant++; 
} 

이 주문한 목록을 유지합니다 : 당신이 적절한 위치를 얻을 때까지

for(Keeper nn = første; nn!= null; nn = nn.neste) { 

    if(nn.n.compareTo(kep.n) > 0) { 
     //Do something here 
+0

대신 TreeSet을 사용할 수없는 이유는 무엇입니까? http://docs.oracle.com/javase/6/docs/api/java/util/TreeSet.html – anoopelias

+0

링크 된 목록이 필요하면 ** java.util.LinkedList **를 사용할 수 있으며지도가 필요한 경우 당신이 사용할 수있는 키에 의해 정렬 ** java.util.TreeMap **. 나는 당신이 찾고있는 TreeMap을한다고 생각한다. –

+0

@anoopelias 아마도 그는 직접 구현해야합니다. 숙제를 좋아해. – gaborsch

답변

1

으로 반복을 사용합니다.

+0

이것은 정확히 내가 찾던 것이 었습니다. 대단히 감사합니다! – Jectson

+0

@SondreEftedal 아마도 upvote 가치가있을 수도 있습니다 :) – gaborsch

관련 문제