我正在比较两个列表。
List allUserGroups = UserBC.getAllGroupsForUser(userId, deptID);
List<String> confUserGroups= Arrays.asList(configuredSet);
列表一返回对象,我需要将其类型转换为 GroupData 实体。GroupData 有多个字段并且想要比较字段“id”之一。所以我使用 map 函数进行类型转换,如下所示,
isValuePresent = allUserGroups.stream().map(p -> (GroupData) p).anyMatch(p -> confUserGroups.contains(p.getId()));
问题是,因为p.getId()
它再次要求类型转换。编译器要求再次添加强制转换。如果我错过了什么,任何人都可以提出建议。
EDIT1: id 是 long 类型,否则我可以使用((GroupData)p).getId()
EDIT2:修改了 Joop 回答的代码,但得到同样的错误
你可以尝试使用这样的东西:
allUserGroups.stream()
.map(GroupData.class::cast)
.map(GroupData::getID)
.anyMatch(confUserGroups.contains)
例如与String
类:
List<Object> list = Arrays.asList("a","ab","abc");
list.stream()
.map(String.class::cast) // cast to String
.map(String::getBytes) // call getBytes on every element
.forEach(System.out::println);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句