我有一份包含以下形式的票价的航空公司交易清单:


  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;
}

09-10 01:07
查看更多