Java 添加存储在树映射中的值

Java 添加存储在树映射中的值,java,treemap,Java,Treemap,我目前正在开发一个库存系统,其中键是项,值是存储在键中的项的数量,我正在使用Java 7,作为一种语言,我对它相当陌生。到目前为止,这就是我所拥有的: String itemName = item.trim().toLowerCase(); if(!add < 1) { if (!invMap.containsKey(itemName) { invMap.put(itemName, add); } Strin

我目前正在开发一个库存系统,其中键是项,值是存储在键中的项的数量,我正在使用Java 7,作为一种语言,我对它相当陌生。到目前为止,这就是我所拥有的:

    String itemName = item.trim().toLowerCase();  
    if(!add < 1)  
    {  
    if (!invMap.containsKey(itemName)  
    {  
    invMap.put(itemName, add);
    }  
String itemName=item.trim().toLowerCase();
如果(!添加<1)
{  
如果(!invMap.containsKey(itemName)
{  
invMap.put(itemName,add);
}  
当方法运行时,它会询问用户一个项目(项目)以及要添加多少项目(添加)我查看了Javadoc,看看是否有一种方法可以检索键下存储的值,但我没有看到任何有用的方法。我认为,如果我只是朝着正确的方向推一推,我应该能够找出其余的内容,我更喜欢提示,而不是一步一步地直接进行操作。

您可以使用它来获取现有的值,然后添加
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 );

谢谢,我只是好奇,因为在我问之前,我已经试过这样做,但是在两行上分别使用add=invMap.get(itemName)+add;然后在下一行invMap.put(itemName,add)当在第一个返回中添加5时,它将输出10,然后在第二个返回中它将输出15。那么,为什么这可以工作,但不能将其拆分为两行呢?不客气。Javadoc是您的朋友;-)(另请参阅。