【发布时间】:2023-04-03 17:12:01
【问题描述】:
我有一个类似下面的方法-:
public void apply(ArrayList<String> tokenStream);
我接受如下字符串标记列表 - tokenStream = ("I am good" , "I am bad") ,并且我希望能够将 tokenStream 列表中的这些标记转换为单独的标记和以在方法执行结束后我应该拥有的方式将它们添加回同一个列表 - tokenStream = ("I" , "am" ,"good" , "I" , "am" , "bad"), How我可以使用 ListIterator 来解决这个问题吗?基本上我希望能够拆分 tokenStream 中的各个字符串,并使用 ListIterators 的 set 和 remove 方法将它们添加回同一个流对象,我该怎么做?
这正是我想要做的事情
public void apply(tokenstream stream){
if (stream != null) {
ArrayList<String> splittedTokens = new ArrayList<>();
while (stream.hasNext()) {
String token = stream.next();
String[] splitTokens = token.split("\\s+");
for (int i = 0; i < splitTokens.length; ++i)
splittedTokens.add(splitTokens[i]);
}
// set the stream to hold this new formed stream with tokens
stream.set((String[]) splittedTokens.toArray());
}
}
我正在尝试从令牌流对象中的令牌中删除空格,该对象在内部使用数组列表来存储令牌,并且此令牌流类具有一组方法来补充 ListIterator 类的方法,例如 set 和 remove,那么如何我应该去实现它吗?
【问题讨论】:
-
你为什么关心使用
ListIterator?你都尝试了些什么?贴一些代码。 -
okk lemme 为您发布确切的内容
-
@PhilippReichart :现在请看解释。
-
您当前的代码如何不起作用?
tokenstream是ListIterator吗?如果是这样,我怀疑您是否可以使用ListIterator.set()实现您正在尝试的内容,它仅“替换下一个或上一个返回的最后一个元素”,因此似乎没有办法向迭代器添加比原来更多的项目.如果tokenstream是ArrayList,请在下面使用 Evgeniy 的答案。 -
tokenstream 类有一个 set 方法,该方法在令牌流对象使用的数组列表内部使用 set 方法
标签: java regex string iterator