Java Map添加键值

时间:2015-01-08 05:07:34

标签: java dictionary

方法:

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)

2 个答案:

答案 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。