2015-01-08 4 views
0

방법 : 우리는 모든 값을 추가 할 수있는 방법을 위의 method is (345,7905,345)
위 우리가지도 컬렉션 모든 항목의 금액을 수집 방법 및 출력과
Java 맵 추가 키 값

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

특정 키 (양)

예상 출력 :

8595 (i.e 345+7905+345) 
+0

'List valuesForItem = map.get (key)'를한다면, 나머지는 어떻게하는지 알고 계십니까? –

답변

0

당신이 의미하는 바를 실제로 얻지는 못하지만, 모든 값을 List에 추가하려고하는 것이 재미 있습니다. 이 작업을 수행하려면 다음과 비슷한 코드로 orderItemDetails.put를 교체해야합니다 귀하의 경우에는

public addValue(Key key, Value value) { 
    if (!map.containsKey(key)) { 
     map.put(key, new ArrayList<>()); 
    } 
    map.get(key).add(value); 
} 

: 일반 Map<Key,List<Value>> 구조에서

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

다음과 같이 보이는 코드를 필요로 끝낸다.

또는 구아바와 같은 타사 라이브러리의 진정한 멀티 맵을 사용할 수 있습니다.

합산 값은 단순히 다음과 같습니다

map.get(key).stream().sum(); 

이 값이 스트림 IntStream하게 목록을 있다고 가정.