使用 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() 来查找要插入的索引,以便插入之前。这不太可能让你开心。
我正在尝试将字符串添加到按字母顺序排列的链表中。一切正常,除了当我在我的迭代器对象上调用 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() 来查找要插入的索引,以便插入之前。这不太可能让你开心。