如何仅在哈希表中添加值

时间:2018-06-11 21:43:02

标签: java dictionary data-structures hashtable

我被要求创建一个

Hashtable <Client, List<Article>> sellings

,然后,有一个我应该创建的方法

registerSellings(Client k ,Article a)

并且练习说如果表Client k上存在sellings,那么该文章将作为值添加到销售表中,所以我这样做了,

 if(sellings.containsKey(k)) {
 ....
 }

但是我应该在block里面写什么,将值添加到当前现有密钥,如果客户端不作为销售表中的密钥存在,则将其添加到sellings表中,包括新的文章列表作为一个值,首先添加销售的文章。

1 个答案:

答案 0 :(得分:4)

如果客户端存在,只需将文章add列入其列表。如果他没有创建新列表并添加到其中:

if (sellings.containsKey(k)) {
    sellings.get(k).add(a);
} else {
    List<Article> list = new ArrayList<>();
    list.add(a);
    sellings.put(k, list);
}

请注意,Java 8的computeIfAbsent会使整个块消失,并生成更优雅的代码:

sellings.computeIfAbsent(k, s -> new ArrayList<>()).add(a);