当尝试按以下代码对WlMatch类型的列表进行排序时,我看到了异常:
/jam/verify/:token
我尝试同时使用可比和比较器排序,但导致相同的错误。有更多专业知识的人可以指导我哪里出问题了吗。
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to java.lang.Comparable
如果您想查看列表中的内容。调试模式下的wlMatchs值为
ReadContext readContext = JsonPath.parse(responseJson);
List<WlMatch> wlMatchs = readContext.read("$.response.watchList.searchResult.records.resultRecord[0].watchlist.matches.wlmatch");
if (wlMatchs != null) {
// wlMatchs.sort(Comparator.comparingInt(WlMatch::id));
wlMatchs.sort(new Comparator<WlMatch>() {
@Override
public int compare(WlMatch w1, WlMatch w2) {
if (w1.getId() == w2.getId()) {
return 0;
}
return w1.getId() - w2.getId();
}
});
答案 0 :(得分:0)
您可以尝试执行此操作。
ReadContext readContext = JsonPath.parse(responseJson);
List<HashMap> mapWlMatchs = readContext.read("$.response.watchList.searchResult.records.resultRecord[0].watchlist.matches.wlmatch");
if (mapWlMatchs != null) {
//Transform to List<WlMatch> with Java8 stream (Pseudocode. Depends on key/value objects in LinkedHashMap. Assuming you have <Object, WlMatch> key/value Map.
List<WlMatch> wlMatchs = mapWlMatchs.entrySet().stream().map(w -> {w.getValue()}).collect(Collector.toList());
// wlMatchs.sort(Comparator.comparingInt(WlMatch::id));
wlMatchs.sort(new Comparator<WlMatch>() {
@Override
public int compare(WlMatch w1, WlMatch w2) {
if (w1.getId() == w2.getId()) {
return 0;
}
return w1.getId() - w2.getId();
}
});