我有一份包含以下形式的票价的航空公司交易清单:
C $ 145.19,C $ 298.17,CC $ 398.17,C $ 876.21,C $ 1001.71
并根据票价从低到高的顺序显示交易。
我必须创建一个脚本来提取此票价,并检查是否根据票价从低到高的顺序显示交易。但是我使用数组列表作为字符串而不是双精度。
如何将字符串arraylist转换为double,以便arraylist可以返回排序后的值?
码:
ArrayList<String> dealList = new ArrayList<>();
List<Webelement> deals = driver.findelements(By.xpath//"div[@class='xyz']");
// It pulls out all the Fare with same Xpath which is almost 10 value.
for(Webelement w: deals)
{
deallist.add(w.gettext());
}
ArrayList<String> newDeaList = new ArrayList<>();
for(String s: dealList)
{
newDealList.add(s);
}
Collections.sort(newDealList);
Assert.Assertequals(dealList,newDealList);
但是我没有得到正确的输出。
产值:
C $ 145.19,C $ 298.17,CC $ 398.17,C $ 876.21,C $ 1001.71
最佳答案
我建议类似的东西:
Collections.sort(stringArray, (s1, s2) -> {
return Double.valueOf(s1.split('$')[1])
.compareTo(Double.valueOf(s2.split('$')[1]));
});
或者,您可以执行以下操作:
Collections.sort(stringArray.stream().map(s -> Double.valueOf(s.split('$')[1])));
所有这些已经说完了,您似乎正在代码片段的末尾比较两个不同数组的相等性,该操作将始终返回false,因为它们将比较地址相等性。
编辑:(对问题进行澄清后-这是如何比较两个数组是否相等)
boolean compareArrays(List<String> arr1, List<String> arr2) {
if (arr1.size() != arr2.size()) {
return false;
}
for(int i = 0; i < arr1.size(); i++) {
if (!arr1.get(i).equals(arr2.get(i)) {
return false;
}
}
return true;
}