2010-07-21 97 views
2

我有一個excel電子表格的設置看起來像一個平坦表格的標題值列表。我也有一個列表,定義Excel表格將被插入到的關鍵字段。我基本上想要遍歷頭字段列表,並且標題存在於關鍵字段列表中,將它添加到某種類型的地圖中。檢查一個列表中的值是否存在於另一個列表中的最佳方法是什麼?檢查一個列表中的元素是否存在於另一個列表中

+1

這與Java或數學有什麼關係? :-) – corsiKa 2010-07-21 13:46:57

+0

對不起,語言是java。數學是一個意外。 – 2010-07-21 14:02:55

回答

2

我相信把你的密鑰列表變成Set對象會給你你正在尋找的功能。


Set<String> keys = new HashSet<String>(listOKeys); 

for (String header : listOHeaders) { 
    if (keys.contains(header)) { 
     // process 
    } 
} 
+0

List也有一個contains方法,儘管使用HashSet很可能快點。 – 2010-07-21 14:28:31

+0

@Andrei:除非我誤解了某些東西,否則對於HashSet而言,列表與O(lg n)之間是O(n)。對於小數據集來說是一個微不足道的區別,但是對於效率的默認並不是什麼壞事。 – BlairHippo 2010-07-21 14:41:02

1
List myList = //... 
List another = //... 
myList.retainAll(another); 
+0

我只需要檢查值是否存在。如果標題位於關鍵字段列表中,那麼我將繼續將該標題及其行值添加到地圖。如果我沒有弄錯,retainAll將只刪除不在鍵列表中的任何值,給我一個我已經擁有的鍵列表的克隆 – 2010-07-21 14:05:18

相關問題