![](/img/trans.png)
[英]java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast
[英]Filter a list of POJO using streams - getting ClassCastException java.util.LinkedHashMap cannot be cast
盡管問題很熟悉,但我的問題有點奇怪。
這是我擁有的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過濾列表? 我找不到解決方案。
提前致謝。
你可以試試 :
Predicate<POJO> filterPredicate = item -> "POJOName".equals(item.getName());
List<POJO> filteredPOJOs = pojoList.stream()
.filter(filterPredicate)
.collect(Collectors.toList())
在第一個示例中沒有問題:
List<POJO> filteredPOJO = pojoList.stream()
.filter(p -> p.getName().equals("POJOName"))
.collect(Collectors.toList());
我只是注意到在:equals(“ POJOName”)之后缺少括號以關閉過濾器參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.