我从基于空手道的 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.
我需要在空手道功能文件中使用升序/降序排序。有人可以帮我吗?
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);
您正在添加两者Integer
s and Double
是相同的List
。当排序方法尝试比较Integer
to a Double
它试图投射一个Integer
to a Double
,失败了。
不要使用原始类型。如果您需要将双精度值添加到List
, use a 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()
将它们相互比较不会有麻烦。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)