2010-07-21 99 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

相关问题