2015-11-16 4 views
0

В настоящее время я работаю над системой инвентаризации, где ключ является Item, а Value - количеством элементов, хранящихся в ключе, я работаю с Java 7, и я довольно новичок в это как язык. До сих пор это то, что у меня есть:Добавление значений, хранящихся в TreeMap

String itemName = item.trim().toLowerCase(); 
    if(!add < 1) 
    { 
    if (!invMap.containsKey(itemName) 
    { 
    invMap.put(itemName, add); 
    } 

Когда метод запускается он запрашивает пользователя для пункта (пункт) и сколько из пункта добавить (добавить) Я посмотрел в Javadoc, чтобы увидеть, если есть был методом извлечения значения, хранящегося под ключом, но я не видел ничего, что помогло. Я думаю, что если я просто подтолкнул бы в правильном направлении, я должен был бы понять остальное и предпочел бы намеки, а не шаг за шагом.

ответ

1

Вы можете использовать Map.get, чтобы получить существующее значение, а затем добавить add к нему, и put его обратно:

String itemName = item.trim().toLowerCase(); 
if(add >= 1) 
{ 
    if (! invMap.containsKey(itemName)) 
     invMap.put(itemName, add); 
    else 
     invMap.put(itemName, add + invMap.get(itemName)); 
    } 
} 

Вы можете сократить это, потому что Map.get и производные возвращают null если ключ неизвестно:

Integer old = invMap.get(itemName); 
    invMap.put(itemName, old == null ? add : add + old); 
+0

Спасибо, мне просто интересно, потому что прежде чем я попросил, я попытался это сделать, но на 2 отдельных строках с add = invMap.get (itemName) + add; затем на следующей строке invMap.put (itemName, add), и при добавлении 5 в первый возврат будет выводиться 10, затем на втором будет выводиться 15. так почему это работает, но не разбивает его на 2 строки? – Jay

+0

Добро пожаловать. Javadoc - ваш друг ;-) (Также см. [TreeMap.get] (http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html#get%28java.lang.Object % 29). – Kenney

Смежные вопросы