为了账号安全,请及时绑定邮箱和手机立即绑定

使用java中的startsWith方法删除LinkedList元素

使用java中的startsWith方法删除LinkedList元素

拉风的咖菲猫 2021-08-04 17:29:03
我正在尝试删除以 r 和 g 开头的列表元素一个条件可以很好地删除从 r 开始的元素,但下一个不能在 if 循环中帮助我出错的地方。谢谢..!!我的代码是import java.util.Arrays;import java.util.LinkedList;public class EasyRemovingList {    void removeList(){    String[] inpArray={"red","green","blue","ivory"};    LinkedList<String> upList = new LinkedList<String>(Arrays.asList(inpArray));    System.out.println("Actual "+upList+" "+upList.size());    //System.out.println(upList.get(3));    for(int i = 0;i<upList.size();i++){        //System.out.println(upList.get(i));        if(upList.get(i).startsWith("r")||upList.get(i).startsWith("g")){        upList.remove(i);        System.out.println("Updated "+upList);    }    }    //System.out.println(upList);    }    public static void main(String[] args) {        // TODO Auto-generated method stub        EasyRemovingList er = new EasyRemovingList();        er.removeList();    }}输出是Actual [red, green, blue, ivory] 4Updated [green, blue, ivory]预期输出是Actual [red, green, blue, ivory] 4Updated [blue, ivory]
查看完整描述

3 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

您在遍历时正在删除,这在编码中是一种难闻的气味。


您可以尝试使用迭代器进行删除。


有了iterator,你用它作为


while(iter.hasNext()) {

    String s = iter.next();

    if (s. startsWith(“r”) || s. startsWith(“g”)) {

          iter.remove();

    }

}


查看完整回答
反对 回复 2021-08-04
  • 3 回答
  • 0 关注
  • 179 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信