2015-04-12 151 views
0

我試圖按字母順序將字符串添加到鏈接列表。除了當我在我的迭代器對象上調用add()方法時,一切都工作正常,它在之後添加了當前迭代器位置之後的字符串,從而擾亂了我的字母順序。使用listIterator將對象按字母順序添加到鏈接列表

有沒有辦法讓它在迭代器的當前位置之前添加對象?

由於提前, 泰勒

附:看起來像其他的堆棧溢出是完全相反的問題,很奇怪。

//addElement method, adds string to the linked list in alphabetical order 
public void addElement(Object obj) 
{ 
    String inString = (String) obj; 
    iter = listIterator(); 
    Node newNode = new Node(); 
    newNode.data = obj; 

    if (first != null) 
    { 
     int checker = 0; 
     while (iter.hasNext()==true && checker == 0) 
     { 
      String testString = (String) iter.next(); 
      int i = inString.compareTo(testString); 
      if (i <= 0) 
      { 
       iter.add((Object) inString); 
       checker++; 
      } 

     } 

     if (checker == 0) 
      iter.add((Object) inString); 

    } 

    else 
    { 
     //iter.add((Object) inString); 
     addFirst((Object) inString); 
    } 
} 

回答

0

這是一種非常低效的排序方式。嘗試使用排序功能。如果您需要做的插入,那麼就不要使用列表迭代器 - 讓你在看哪裏的指標,並使用add(index, value)版本添加的 - https://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html#add(int,%20E)

你也可以使用previousIndex()https://docs.oracle.com/javase/7/docs/api/java/util/ListIterator.html#previousIndex()於迭代找到要插入之前插入的索引。這不太可能讓你開心。

+0

感謝您的快速響應! –

相關問題