java.lang.ClassCastException:尝试对列表进行排序时,java.util.LinkedHashMap无法转换为java.lang.Comparable异常

时间:2019-04-07 19:44:27

标签: java comparator classcastexception comparable linkedhashmap

当尝试按以下代码对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();
          }
        });

1 个答案:

答案 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();
          }
        });