有一个原始文本存储在ArrayList中。为了从顶部清除不需要的行,我需要找到包含某个标签的字符串的索引。
标记不是完整的字符串,只是一个子字符串。这意味着我不能使用myArrayList.indexOf(“开始标记”)
(indexOf只查找完整的字符串)
我试图在流上放置一个计数器,对它处理的String进行计数,直到找到标记,但是它不起作用。
使用for循环,我可以找到索引,但这很慢且很丑陋(也给了一些内存错误)。
通过过滤器流式处理ArrayList,并让流返回包含标记的String,这给了我所需的完整String。 具有完整的字符串将启用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方法。有人可以告诉我我在做什么错吗?
答案 0 :(得分:0)
您可以使用df.drop('LIKES',axis=1,inplace=True)
在同一行中获取索引:
IntStream
然后使用它:
OptionalInt index = IntStream.range(0, list.size()).filter(i -> list.get(i).contains("marker text")).findFirst();