LinkedList使用迭代器

时间:2016-03-24 02:48:21

标签: java

我试图在我的链接列表中添加生菜和鸡肉之间的腌菜,并打印出应该是的最终产品:

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

3 个答案:

答案 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}}将返回新元素。 (此调用会增加调用previousnextIndex时返回的值。)

答案 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 + ",");
 }
}
}