删除CSV文件中的行

问题描述 投票:0回答:2

我创建了一个名为ArrayListentryList。我尝试创建的方法是,如果您输入removeAllByDate()并输入日期,则应删除带有该日期的整行。的entryList依次由条目(行)组成,我还创建了方法getDate()。我想到写这样的东西:

public void removeAllByDate(String datum) {
    for(Entry entry: entryList) {
        if (entry.getDate().contains(datum)) {
            entryList.remove(entry);
        }
    }
}

有人看到为什么这不起作用吗?

java file csv arraylist rows
2个回答
1
投票

Nickewas,您对信息不太满意:-至少有2个不同的ArrayList(例如java.util.ArrayList和java.util.Arrays.ArrayList)-您不会提及how无效!

可能与以下有关:for-each循环使用您的Iterator(entryList)提供的Iterable。也许entryList.remove(entry)对Iterable有副作用?

也许是这样,或者是它的变体,会这样做?

entryList.stream()
    .filter (entry -> entry.contains  (datum))  // Creates filtered Stream which...
    .forEach(entry -> entryList.remove(entry)); // ...maybe removes side-effect?

如果没有,您可能必须使用Collector并遍历结果List


0
投票

自Java 8起,有条件地从Collection中删除元素时使用的方法是Collection。您的代码将如下所示:

removeIf()

原始代码不起作用,因为在迭代集合removeIf()时不允许删除元素。

© www.soinside.com 2019 - 2024. All rights reserved.