【问题标题】:How to efficiently match the namespace of an element in java?java中如何有效匹配元素的命名空间?
【发布时间】:2017-07-20 17:19:40
【问题描述】:

下面的test() 函数检查元素是否与预定义的命名空间NSURI 匹配:

class MyClass {
    private static final String NSURI = "http://example.com/mynamespace";

    ...

    public test(Element e) {
        return NSURI.equals(e.getNamespaceURI());
    }
}

字符串比较有效吗?我必须迭代许多节点,可能有不同的命名空间。但是,每次都做一个字符串比较似乎很浪费。

有没有更快的方法来进行命名空间比较?

【问题讨论】:

  • 不浪费。无论如何,任何其他比较命名空间的方式最终都会进行字符串比较。

标签: java xml xml-namespaces


【解决方案1】:

就像 VGR 所说,您很可能会遇到String 与每种方法的比较。但是,有一种选择可能是可能的。

here 所示,Arrays#equals(char[], char[]) 是内在的,这意味着它调用本机代码(或程序集)来比较数组,使其成为更快的替代方案。请记住,JDK 9 将在从今天开始的一周内发布,并且此功能将被修改,但最终仍将是固有的。

因此,如果您能够将每个命名空间收集到单个 char[] 中,那么以这种方式比较它们可能比直接进行 String 比较更快。

很可能,这最终会有点矫枉过正,但值得一试!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    相关资源
    最近更新 更多