使用Java8使用另一个列表筛选列表
我有一个要使用另一个静态列表过滤的实体列表。我正在努力与过滤器部分使用Java8使用另一个列表筛选列表,java,java-8,Java,Java 8,我有一个要使用另一个静态列表过滤的实体列表。我正在努力与过滤器部分 List<Entity> entityList = new ArrayList<Entity> Entity e1 = new Entity(); e1.setId("1"); entityList.add(e1); Entity e2 = new Entity(); e2.setId("2"); entityList.add(e2); List
List<Entity> entityList = new ArrayList<Entity>
Entity e1 = new Entity();
e1.setId("1");
entityList.add(e1);
Entity e2 = new Entity();
e2.setId("2");
entityList.add(e2);
List<String>idList = Arrays.asList("1","3","5","7");
我想迭代entityList并去掉idList中的ID。我是这样做的
List<updatedList> = entityList.stream()
.filter(entry -> entry.getId().anyMatch(idList))
.collect(Collectors.toList());
getId是一个字符串,因此我不能使用anyMatch,因为它应该是一个流。如何修复此问题?您不需要其他流 首先,我建议使用集合进行O1查找 因此,不要将idList作为列表:
Set<String> idList = new HashSet<>(Arrays.asList("1","3","5","7"));
由于contains是集合类型上的一个方法,因此上面的内容应该作为列表或任何其他集合与idList一起使用
entityList.stream()
.filter(entry -> idList.contains(entry.getId()))
.collect(Collectors.toList());