Java 检查一个列表的元素是否存在于另一个列表中
我有一个excel电子表格中的标题值列表,它被设置成一个平面表格。我还有一个列表,定义excel工作表将插入到的表的关键字段。我基本上希望遍历标题字段列表,并且标题存在于关键字段列表中,将其添加到某种类型的映射中。检查一个列表中的值是否存在于另一个列表中的最佳方法是什么 我相信,将密钥列表转换为Java 检查一个列表的元素是否存在于另一个列表中,java,excel,Java,Excel,我有一个excel电子表格中的标题值列表,它被设置成一个平面表格。我还有一个列表,定义excel工作表将插入到的表的关键字段。我基本上希望遍历标题字段列表,并且标题存在于关键字段列表中,将其添加到某种类型的映射中。检查一个列表中的值是否存在于另一个列表中的最佳方法是什么 我相信,将密钥列表转换为集合对象将为您提供所需的功能 List myList = //... List another = //... myList.retainAll(another); Set<String> ke
集合
对象将为您提供所需的功能
List myList = //...
List another = //...
myList.retainAll(another);
Set<String> keys = new HashSet<String>(listOKeys);
for (String header : listOHeaders) {
if (keys.contains(header)) {
// process
}
}
设置键=新哈希集(listOKeys);
for(字符串头:列表头){
if(key.contains(header)){
//过程
}
}
这与Java或数学有什么关系?:-)对不起,语言是java。数学是个意外。我只需要检查这些值是否存在。如果标题在关键字段列表中,那么我将继续将该标题及其行值添加到映射中。如果我没有弄错的话,retainAll会删除键列表中没有的任何值,给我一个我已经拥有的键列表的克隆。list也有一个contains方法,尽管使用哈希集很可能会更快。@Andrei:Yup,O(n)表示列表,O(lg n)表示哈希集,除非我误解了什么。对于小型数据集来说,这是一个微不足道的区别,但默认使用效率很少是一件坏事。