问题很熟悉,我的问题有点奇怪。
这是我拥有的POJO:
public class POJO implements Serializable {
@JsonProperty("ID")
private UUID id;
@JsonProperty("Name")
private String name;
// getters and setters
}
我正在尝试使用以下代码来过滤此POJO的列表:
List<POJO> pojoList = getListOfPojosFromSomeMethod();
List<POJO> filteredPOJO = pojoList.stream()
.filter(p -> p.getName().equals("POJOName"))
.collect(Collectors.toList())
我无法过滤列表。我收到以下异常:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.models.POJO
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining (ArrayList.java:1374)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at
java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at
java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
我也尝试使用地图:
List<POJO> pojoList = getListOfPojosFromSomeMethod();
List<POJO> filteredPOJO = pojoList.stream()
.filter(p -> p.getName().equals("POJOName")
.map(p -> new POJO(p))
.collect(Collectors.toList());
相同的例外。没有任何改变。我在某处读到例外是由于Jackson序列化。
如何同时使用流和Jackson过滤列表?我找不到解决方法。
谢谢。
答案 0 :(得分:0)
您可以尝试:
Predicate<POJO> filterPredicate = item -> "POJOName".equals(item.getName());
List<POJO> filteredPOJOs = pojoList.stream()
.filter(filterPredicate)
.collect(Collectors.toList())
答案 1 :(得分:0)
在第一个示例中没有问题:
List<POJO> filteredPOJO = pojoList.stream()
.filter(p -> p.getName().equals("POJOName"))
.collect(Collectors.toList());
我只是注意到,在:equals(“ POJOName”)以关闭过滤器参数之后,缺少括号。