簡體   English   中英

使用listIterator將對象按字母順序添加到鏈接列表

[英]Using listIterator to add objects alphabetically to a linked list

我正在嘗試按字母順序將字符串添加到鏈接列表。 除非我調用add()方法,我的迭代器對象里都工作正常的,這將當前迭代器的位置,而不是之前之后的字符串,從而搞亂了我的字母順序排列。

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

預先感謝,泰勒

ps好像其他人的堆棧溢出有完全相反的問題,很奇怪。

 //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);
   }
}

這是一種非常低效的排序方式。 嘗試改用sort函數。 如果必須插入,請不要使用列表迭代器-保留要查看的位置的索引,並使用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()查找之前要插入的索引。 這不太可能使您高興。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM