gpt4 book ai didi

java - 为什么此方法不从数组中删除元素

转载 作者:行者123 更新时间:2023-12-02 08:51:14 24 4
gpt4 key购买 nike

我有一个扫描仪将网页的文本读取到数组列表中。模板的每一行都是数组列表中的一个元素。然后,如果索引 1 处的字符是我的目标元素,我有一个循环从列表中删除元素。我的问题是为什么有些元素被删除而另一些则没有?代码如下

public static ArrayList<String> adjustTemplate(ArrayList<ArrayList<String>> consecutiveCountsByGroup) throws FileNotFoundException {
File referenceFile = new File("C:\\Users\\chris\\Documents\\SoundlineFiles\\SoundlineFormater\\format.txt");
Scanner scanner = new Scanner(referenceFile);
ArrayList<String> template = new ArrayList();

//add template to arraylist
int index=0;
while(scanner.hasNextLine()) {
template.add(scanner.nextLine());
index++;
}

for(int i=0;i<template.size();i++) { //for template size

if(template.get(i).charAt(1)=='h' || template.get(i).charAt(1)=='l' || template.get(i).charAt(1)=='p') { //if char at 1 is an h,l or p

if(template.get(i).charAt(1)=='h' ){
template.remove(i);
}

if(template.get(i).charAt(1)=='l' ){
template.remove(i);
}

if(template.get(i).charAt(1)=='p' ){
template.remove(i);
}
}
System.out.println(template.get(i));
}
return template;
}

Console Output

最佳答案

My question is why are some elements being removed and others are not?

当您以这种方式删除元素时,列表的大小会立即减小,例如假设列表具有如下元素:

list(0) -> help
list(1) -> pulp
list(2) -> ram

现在,如果执行list(0).remove,列表的大小会减小到2,并且删除元素之后的元素也会向后移动,即列表变成这样:

list(0) -> pulp
list(1) -> ram

即当i的值变为1时,list(1).remove将删除ram(而不是 PuLP )。

我希望这是清楚的。如有任何疑问,请随时发表评论。

关于java - 为什么此方法不从数组中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60752229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com