2012-09-12 67 views
0

給定List<String>的無序列表,我需要找到是否存在匹配提供的字符串的String找到與列表中的模式匹配的東西的快速(呃)方式

所以,我環路

for (String k : keys) { 
     if (Utils.keysMatch(k, anotherKey)) { 
      result = true; 
      break; 
     } 
    } 

Utils.keysMatch檢查是否適當的匹配可能發生。

如果沒有完整的迭代就可以做到這一點嗎?請注意,k可能是一個正則表達式。

+0

這個清單是否特別大? – Bill

+0

@ Bill約2-250萬個密鑰 – JAM

+0

您能否提供一些問題的背景知識。對於你所描述的,幾乎沒有更快的方法。但是如果你描述了這個問題,那麼可能會有更好的數據結構。 – Bill

回答

1

你可以用番石榴的Iterables.any方法和靜態謂詞類

這樣做,在優雅的方式:

return Iterables.any(keys, Predicates.containsPattern(k);

+0

喜歡它!謝謝 – JAM

1

號在最壞的情況下,最後一個元素,你看,就是第一個匹配,所以你必須看看他們。

當然,如果你可以預先計算一個合適的數據結構,你可能會獲得更快的結果。

相關問題