如何有效地使用ListIterator?

时间:2013-09-24 16:58:58

标签: java regex string iterator

我有类似以下的方法 - :

public void apply(ArrayList<String> tokenStream);

其中我接受一个字符串标记列表,如下所示 - tokenStream =(“我很好”,“我很糟糕”),我希望能够将tokenStream列表中的这些标记转换为单个标记和以方法执行结束后的方式将它们添加回相同的列表我应该有 - tokenStream =(“我”,“我”,“好”,“我”,“我”,“坏”),如何我可以使用ListIterator来解决这个问题吗?基本上我希望能够在tokenStream中拆分单个字符串并使用ListIterators设置和删除方法将它们添加回相同的流对象,我该怎么做?

这是我正在尝试做的事情

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,所以如何我会去实施吗?

1 个答案:

答案 0 :(得分:1)

对于此任务,最好的方法似乎是创建一个临时列表,迭代tokenStream拆分令牌并将它们添加到临时列表,然后从temp中清除tokenStream和addAll