java - Collections.sort 方法抛出类 java.lang.Integer 无法转换为类 java.lang.Double 错误

标签 java karate

我从基于 Karate 的 API 自动化中的 JSON 响应获取一些运行时值。我将它们存储到 ArrayList 中,例如:

   * def ArrayList = Java.type('java.util.ArrayList')
   * def Collections = Java.type('java.util.Collections')
  ArrayList al = new ArrayList();
  * eval for(var i = 0; i < actualPrice.length; i++) expectedPrice.add(actualPrice[i])

当我打印列表时,输出是:

[-150, -210, -100, -112.5]

上面的输出,当我在 Collections.sort(al) 的帮助下应用排序时,它抛出了以下错误:

class java.lang.Integer cannot be cast to class java. lang.Double (java.lang.Integer and java.lang. Double is in module java.base of loader.

我需要在 Karate 功能文件中使用升序/降序排序。有人可以帮我吗?

Java 等效代码是:

    ArrayList al = new ArrayList();
    al.add(-150);
    al.add(-210);
    al.add(-100);
    al.add(-112.5);
    System.out.println(al);
    Collections.sort(al);

最佳答案

您正在添加 IntegerDouble相同List 。当排序方法尝试比较Integer时到 Double它尝试转换 IntegerDouble ,失败了。

不要使用原始类型。如果需要将 double 值添加到 List ,使用List<Double> :

List<Double> al = new ArrayList<>();
al.add(-150.0);
al.add(-210.0);
al.add(-100.0);
al.add(-112.5);
System.out.println(al);
Collections.sort(al);

这样你的 List 的所有元素将是相同类型,并且 Collections.sort()将它们相互比较不会有困难。

关于java - Collections.sort 方法抛出类 java.lang.Integer 无法转换为类 java.lang.Double 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65788369/

相关文章:

java - 如何覆盖代号一中的按钮外观?

java - MySQL JDBC 返回 0 个结果

java - Spring Boot 无法加载类 : com. microsoft.sqlserver.jdbc.SQLServerDriver

从 csv 加载数据时不考虑 Karate 嵌入表达式

json - 在 Karate 中匹配响应时将变量传递给 json 文件

karate - 使用重试直到时,如何在 Karate 测试中输出最后一个请求的响应?

karate - 使用内容类型为文本/纯文本的响应进行匹配

java - 在 Java Eclipse AWT 中,如何检测在按住 Shift 的同时是否单击了按钮?

java - 有人可以帮忙将这个 For 循环快捷方式转换为正常状态吗

automated-tests - Karate #regex;无法验证部分匹配