java - 如何在哈希表中仅添加值

标签 java dictionary data-structures hashtable

我被要求创建一个

Hashtable <Client, List<Article>> sellings

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

registerSellings(Client k ,Article a)

练习表明,如果 Client k ,存在于表中 sellings ,那么文章就会作为一个值添加到销售表中,所以我是这样做的,

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

但是我应该在 if block 内写什么,以将值添加到当前现有的键,如果客户端不作为销售表中的键存在,则将其添加到销售表中,包括新的文章列表作为一个值,首先将已售出的商品添加到其中。

最佳答案

如果客户端存在,则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将使整个 block 消失,并产生更优雅的代码:

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

关于java - 如何在哈希表中仅添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50806453/

相关文章:

algorithm - 给定一个函数 rand7(),编写一个函数 rand10() 统一

java - 如何为 Play Framework 2.1 设置 JVM 参数 -Xmx

java - @Transactional(propagation=Propagation.REQUIRES_NEW) 打开两个事务?

iphone - 实现对 map View Controller 的搜索

python - 电子邮件和 map 减少作业

c++ - 队列结构给出了奇怪的错误

algorithm - 创建平衡二叉搜索树的时间复杂度?

java - 使用 Hibernate 查询语言和 'like' 获取数据

Java纸牌游戏。如何在main中调用

dictionary - 这个并发映射有什么问题?