方法:
public void itemAmountCollection() {
Map<String, List<Integer>> orderItemDetails = new LinkedHashMap<String, List<Integer>>();
ArrayList<Integer> itemsAmount = new ArrayList<Integer>();
WebElement orderItemTable = driver.findElement(By
.xpath("//*[@id='tblInfo']/tbody"));
List<WebElement> noOfItems = orderItemTable.findElements(By
.tagName("tr"));
for (int i = 1; i <= noOfItems.size(); i++) {
String itemAmount = driver.findElement(
By.xpath("//*[@id='tblInfo']/tbody/tr[" + i
+ "]/td[8]")).getText();
itemsAmount.add(Integer.parseInt(itemAmount));
orderItemDetails.put("amount", itemsAmount);
}
}
通过上述方法,我们使用地图集合和输出收集了上述 method is (345,7905,345)
的所有项目金额
我们如何在特定密钥(金额)中添加所有值
预期输出:
8595 (i.e 345+7905+345)
答案 0 :(得分:0)
我真的不明白你的意思,但我很有趣,你试图在List
中添加所有值。要做到这一点:
int result = 0;
for(int i : itemsAmount)
{
result+=1;
}
System.out.println(result);//This should print 8595.
答案 1 :(得分:0)
通常Map<Key,List<Value>>
结构最终需要看起来如下的代码:
public addValue(Key key, Value value) {
if (!map.containsKey(key)) {
map.put(key, new ArrayList<>());
}
map.get(key).add(value);
}
在您的情况下,您应该使用类似的代码替换orderItemDetails.put
。
或者,您可以使用来自第三方库(如guava)的真实Multimap。
将值汇总为:
map.get(key).stream().sum();
假设值为List,使流成为IntStream。