【问题标题】:A program using iterator to remove the entries使用迭代器删除条目的程序
【发布时间】:2016-10-23 13:18:31
【问题描述】:

我使用列表编写了一个代码。但即使我使用了remove() 方法,输出也会显示所有单词而不删除。我该怎么做才能克服?

import java.util.*;
public class ListExample1 {

public static void main(String[] args) {

    List<String> strList = new ArrayList<String>();
    //add data into list
    strList.add("ask");
    strList.add("rule");
    strList.add("left");
    strList.add("right");
    strList.add("fight");
    strList.add("fish");
    strList.add("ask");


    //read the data
    for(String str : strList){
        System.out.println(str);
    }
    System.out.println("--------------------------");
    Iterator<String> iteratorRef = strList.iterator(); 

    while(iteratorRef.hasNext()){
        String str = iteratorRef.next();
        System.out.println(str);
        if(str.equals("ask")){
            iteratorRef.remove();
        }
    }

【问题讨论】:

  • 在删除之前打印条目。为什么您希望删除的条目不会显示?

标签: java arraylist collections iterator


【解决方案1】:

您在 remove 方法后没有编写任何打印语句,因此您无法看到结果。只需添加打印方法

System.out.println("ArrayList after removal : ");
    for(int i=0; i< strList.size(); i++)
      System.out.println(strList.get(i));
}

【讨论】:

  • 或 for (String string : strList) { System.out.println(string); }
【解决方案2】:

您在 while 循环中无条件地打印每个字符串。这是你想要的吗?

while(iteratorRef.hasNext()){
    String str = iteratorRef.next();
    if(str.equals("ask")){
        iteratorRef.remove();
    } else {
        System.out.println(str);
    }
}

【讨论】:

    猜你喜欢
    • 2012-02-12
    • 2023-03-10
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多