【问题标题】:Java 8 how to remove item from arraylist with ids from arrayJava 8 如何使用数组中的 id 从数组列表中删除项目
【发布时间】:2019-04-27 02:54:42
【问题描述】:

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

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));
}

但我得到一个空数组列表。请帮忙。谢谢。

【问题讨论】:

  • 您的主要缺陷是条件中的!= 而不是==。如果它们存在,则应删除,而不是在它们不存在时删除,这就是 "I get an empty arraylist" 的原因

标签: java arraylist java-8


【解决方案1】:

groupIds 是一个String 数组,将其转换为List&lt;String&gt; 并使用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 流,过滤GroupString 数组groupIds 中没有idgroupIds

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

【讨论】:

  • 对不起。我不清楚。如果groupId 不在loadedGroupList 数组列表中,我想从loadedGroupList 中删除。我该怎么做?
  • 什么?这是你的问题I want to remove from loadedGroupList if groupId is not in groupIds array?或
  • 在您的流管道操作检查contains之前创建一个唯一groupIdsSet会更有意义。
  • @Deadpool。对不起。它不起作用。如果我使用 Java 8 流,则没有过滤。它返回所有列表。请帮忙。谢谢。
  • List filteredGroupList = loadedGroupList.stream() .filter(x->!Arrays.asList(groupIds).contains(x.getId())) .collect(Collectors.toList() ); log.debug("ids:" + selectionGroupsIds); filtersGroupList.forEach(x -> log.debug(x.getGroupName()));
猜你喜欢
  • 2017-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
  • 2018-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多