我试图在我的链接列表中添加生菜和鸡肉之间的腌菜,并打印出应该是的最终产品:
Bread1,芥菜,莴苣,pickels,鸡肉,番茄,Bread2,端...
然而,该程序只打印出来:芥末,鸡肉,面包2,结束......
有人可以向我解释错误吗?
public class LinkedList
{
public static void main(String[] args)
{
List<String> myLinkedList = new LinkedList<String>();
String strOutput="";
myLinkedList.add("Bread1");
myLinkedList.add("mustard");
myLinkedList.add("lettuce");
myLinkedList.add("chicken");
myLinkedList.add("tomato");
myLinkedList.add("Bread2");
ListIterator<String> lit = myLinkedList.listIterator();
while (lit.hasNext())
{
String str = lit.next();
if (myLinkedList.equals("lettuce"))
{
lit.add("pickels");
}
strOutput += (lit.next().toString() + ",") ;
}
strOutput += ("end...\n");
}
}
答案 0 :(得分:0)
您有两个错误,两者都与缺少使用str
变量有关:
while (lit.hasNext())
{
String str = lit.next();
if (str.equals("lettuce")) // <-- Use str, not myLinkedList
{
lit.add("pickels");
}
strOutput += (str + ",") ; // <-- Use str, not lit.next()
}
请注意pickels
不会返回Listiterator
。请参阅add()
的javadoc:
将指定的元素插入列表(可选操作)。 元素将紧接在
next()
返回的元素之前插入(如果有),并插入previous()
返回的元素之后(如果有)。 (如果列表中不包含任何元素,则新元素将成为列表中的唯一元素。)新元素将插入隐式游标之前:对next
的后续调用不受影响,并且后续调用{{ 1}}将返回新元素。 (此调用会增加调用previous
或nextIndex
时返回的值。)
答案 1 :(得分:0)
如果要在列表中间添加一些值,则应使用add(index,object)
方法。
List<String> list = new ArrayList<String>(Arrays.asList("Apple", "Banana", "Cherry"));
int index = list.indexOf("Banana"); //indexOf() to find the position of Banana
list.add(index, "Blueberry"); // insert Blueberry before Banana
System.out.println(list); //Apple, Blueberry, Banana, Cherry
你在一次迭代中调用next()
两次。每次调用next()
时,它都会给出迭代的下一个对象(在本例中为String)。因此,将next()
值存储在适当的变量中,并在以后根据需要使用它。
答案 2 :(得分:0)
这应该完全做你需要的:)。希望它有所帮助!
import java.util.LinkedList;
import java.util.List;
public class Program
{
public static void main(String[] args)
{
List<String> myLinkedList = new LinkedList<String>();
myLinkedList.add("Bread1");
myLinkedList.add("mustard");
myLinkedList.add("lettuce");
myLinkedList.add("chicken");
myLinkedList.add("tomato");
myLinkedList.add("Bread2");
int index = myLinkedList.indexOf("lettuce");
myLinkedList.add(index + 1, "pickels");
for(String strOutput: myLinkedList){
System.out.print(strOutput + ",");
}
}
}