使用 listIterator 按字母顺序将对象添加到链表

Using listIterator to add objects alphabetically to a linked list

我正在尝试将字符串添加到按字母顺序排列的链表中。一切正常,除了当我在我的迭代器对象上调用 add() 方法时,它将字符串 添加到当前迭代器位置之后 而不是之前,从而弄乱了我的字母顺序。

有没有办法让它在迭代器的当前位置之前添加对象?

提前致谢, 泰勒

p.s。看起来其他人的堆栈溢出问题完全相反,很奇怪。

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

这是一种非常低效的排序方式。尝试改用排序功能。如果您必须进行插入,则不要使用列表迭代器 - 保留您正在查看的位置的索引并使用 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() 来查找要插入的索引,以便插入之前。这不太可能让你开心。