如何从数组中删除具有ID的arraylist中的项目。我试过了:

List <Group> loadedGroupList = iGroupRepository.findAll();
String [] groupIds = StringUtils.split(selectionGroupsIds, ',');

for (int i = 0 ; i < groupIds.length; i++) {
    String groupId = groupIds[i];
    loadedGroupList.removeIf(x -> x.getId() != Long.parseLong(groupId));
}


但是我得到一个空的arraylist。请帮忙。谢谢。

最佳答案

groupIds是一个String数组,将其转换为List<String>并使用contains()

如果groupId在groupIds数组中,则从loadedGroupList中删除Group

loadedGroupList.removeIf(x -> Arrays.asList(groupIds).contains(x.getId()));


如果groupId不在groupIds数组中,则从loadedGroupList中删除Group

loadedGroupList.removeIf(x -> !Arrays.asList(groupIds).contains(x.getId()));


通过使用java-8流,过滤Group数组id中没有StringgroupIds

List<Group> result = loadedGroupList.stream()
                                    .filter(x->!Arrays.asList(groupIds).contains(x.getId()))
                                    .collect(Collectors.toList());

09-11 16:20