0

假设我有java.util.Set<String>其中"200Y2Z", "20012Y", "200829", "200T2K"遵循相同的模式"200$2$""$"占位符在哪里。现在哪种方法是从 Java 中的此类字符串中获取唯一代码集的最有效方法?

输入:java.util.Set<String>"200Y2Z", "20012Y", "200829", "200T2K"

预期产出:java.util.Set<String>"YZ", "1Y", "89", "TK"

我的尝试::

public static void getOutPut()
    {
        Set<String> input = new HashSet<String>();
        Set<String> output = new HashSet<String>();
        StringBuffer out = null;
        for(String in : input)
        {
            out = new StringBuffer();
            StringCharacterIterator sci = new StringCharacterIterator(in);
            while (sci.current( ) != StringCharacterIterator.DONE){
                if (sci.current( ) == '$')
                {
                    out.append(in.charAt(sci.getIndex()));
                }
                sci.next( );
            }
            output.add(out.toString());
        }

        System.out.println(output);
    }

它工作正常,但是有没有比这更有效的方法来实现它?我需要为超过 1000K 的代码执行此操作。

4

1 回答 1

1

获取模式中占位符的索引:

int i = pattern.getIndexOf('$');

您必须迭代以获取所有索引:

pattern.getIndexOf('$', lastIndex+1);

循环和检查由您决定。

然后charAt与集合中每个元素的索引一起使用。

于 2014-12-12T07:40:41.013 回答