ArrayList 中存储了一个原始文本。要从顶部清除不需要的行,我需要找到包含某个标签的字符串的索引。
标签不是一个完整的字符串,只是一个子字符串。这意味着我不能使用 myArrayList.indexOf("start marker")
(indexOf 只查找完整的字符串)
我试图在流上放置一个计数器,计算它处理的字符串,直到找到标记,但它不起作用。
使用 for 循环我可以找到索引,但这既慢又难看(也给出了一些内存错误)。
通过过滤器流式传输 ArrayList,并让流返回包含标记的字符串,这为我提供了我正在寻找的完整字符串。拥有完整的字符串会启用 ArrayList.indexOf 方法。
总而言之,它现在可以工作了,但我仍然想知道如何在流上设置计数器。
For-loop(有效但丑陋):
for(String s : myArrayList)
{
if(s.contains("marker text"))
{
break;
}
else counter++;
}
找到完整的字符串(体面的解决方法):
String markerText = myArrayList.stream().filter(s -> s.contains("marker text")).
findFirst().orElse("marker not found");
int x = myArrayList.indexOf(markerText);
这不起作用:
int counter = 0;
myArrayList.stream().peek(counter++).
filter(s -> s.contains("marker text")).findFirst();
这不会编译,因为 peek() 拒绝对整数 x 进行操作。
我还尝试将 x 转换为 AtomicInteger 并调用 getAndIncrement() 方法。这也不起作用。
我看到很多类似的主题,但他们都使用foreach方法。有人可以告诉我我做错了什么吗?