Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查一个列表的元素是否存在于另一个列表中_Java_Excel - Fatal编程技术网

Java 检查一个列表的元素是否存在于另一个列表中

Java 检查一个列表的元素是否存在于另一个列表中,java,excel,Java,Excel,我有一个excel电子表格中的标题值列表,它被设置成一个平面表格。我还有一个列表,定义excel工作表将插入到的表的关键字段。我基本上希望遍历标题字段列表,并且标题存在于关键字段列表中,将其添加到某种类型的映射中。检查一个列表中的值是否存在于另一个列表中的最佳方法是什么 我相信,将密钥列表转换为集合对象将为您提供所需的功能 List myList = //... List another = //... myList.retainAll(another); Set<String> ke

我有一个excel电子表格中的标题值列表,它被设置成一个平面表格。我还有一个列表,定义excel工作表将插入到的表的关键字段。我基本上希望遍历标题字段列表,并且标题存在于关键字段列表中,将其添加到某种类型的映射中。检查一个列表中的值是否存在于另一个列表中的最佳方法是什么

我相信,将密钥列表转换为
集合
对象将为您提供所需的功能

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)表示哈希集,除非我误解了什么。对于小型数据集来说,这是一个微不足道的区别,但默认使用效率很少是一件坏事。