2017-07-20 78 views
3

下面檢查的test()函數,如果該元素的預定義的命名空間NSURI相符:如何高效地匹配java中元素的名稱空間?

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

    ... 

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

是對字符串比較效率?我必須遍歷許多節點,可能有不同的命名空間。但是,每次做字符串比較看起來都很浪費。

是否有更快的方式來進行命名空間比較?

+0

這不是浪費。任何其他比較名稱空間的方式最終都會進行字符串比較。 – VGR

回答

0

和VGR一樣,你很可能會遇到String與每種方法的比較。不過,有一個選項可能是可能的。

如圖hereArrays#equals(char[], char[])是本徵的,這意味着它調用本機代碼(或組件)來比較陣列,使其成爲一個快得多替代。請記住,JDK 9將從今天起一週內發佈,並且此功能將被修改,但它最終仍將是固有的。因此,如果您能夠將每個名稱空間收集到一個char[]中,那麼比較它們的速度可能會比直接比較String的速度更快。

最有可能的是,這將最終成爲矯枉過正,但它值得一試!

相關問題