如何在Java中比较两个ArrayList集合?对象与字符串数组匹配问题
解决对象数组与字符串数组的元素匹配问题
你之前的代码无法生效的原因很直接:array2.stream().anyMatch(array1::contains)是把array2里的整个对象拿去和array1中的字符串元素做匹配,对象和字符串属于不同类型,自然没法匹配成功。
要实现需求,你需要先提取对象数组中每个元素的itemType属性值,再和字符串数组做匹配,修改后的代码如下:
// 假设你的对象类有getItemType()方法用于获取itemType属性 boolean anyMatch = array2.stream() .map(item -> item.getItemType()) .anyMatch(array1::contains);
如果你的对象类有明确的类名(比如叫Item),也可以用方法引用让代码更简洁:
boolean anyMatch = array2.stream() .map(Item::getItemType) .anyMatch(array1::contains);
这段代码先通过map操作把对象流转换为对应的itemType字符串流,再用anyMatch判断是否存在任意一个字符串在array1中,完全符合你“任一元素匹配则返回true”的需求。
内容的提问来源于stack exchange,提问作者Krish
相关产品推荐
相关产品推荐

