簡體   English   中英

Java Map添加鍵值

[英]Java Map Adding Key Values

方法 :

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)輸出為method is (345,7905,345)
我們如何才能將所有值添加到特定鍵(金額)中

預期產量:

8595 (i.e 345+7905+345)

我並沒有真正理解您的意思,但是我很想您正在嘗試將所有值添加到List 去做這個:

int result = 0;
for(int i : itemsAmount)
{
    result+=1;
}
System.out.println(result);//This should print 8595.

通常, 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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM