gpt4 book ai didi

java - HashMap 包含键

转载 作者:搜寻专家 更新时间:2023-10-31 19:56:06 24 4
gpt4 key购买 nike

我在我的教科书上找到了这个程序,它基本上计算了字符串数组 tst 中每个字符串的出现次数。

public class Test {
private static HashMap<String, Integer> mp = new HashMap<String, Integer>();

public static void main(String[] args) {
String[] tst = new String[] { "ABC", "DEF", "DEF", "DEF","ABC", "DEF", "ABC" };
checkMap(tst);

}

public static void checkMap(String[] str) {
for (String st : str) {
if (!mp.containsKey(st)) {
mp.put(st, 1);
}

else {
Integer ct = mp.get(st);
if(ct!=null)
{
ct++;
mp.put(st, ct);
}
}
}

for (Map.Entry<String, Integer> entry : mp.entrySet()) {
System.out.println(entry.getKey() + " ocurrs " + entry.getValue()+ " times");
}
}

代码的输出是 -

ABC ocurrs 3 times
DEF ocurrs 4 times

我的问题在此处的 if/else 语句中 -

if (!mp.containsKey(st)) {
mp.put(st, 1);
}

else {
Integer ct = mp.get(st);
if(ct!=null)
{
ct++;
mp.put(st, ct);
}
}

当我们没有在 hashmap 中放入任何条目时(hashmap 是空的),这是基于什么工作的?如果这是一个非常基本的问题,我深表歉意,但我在网上找不到任何可以解释这一点的答案。我对 if/else 循环中写的内容感到困惑。此外,这一行在这里 -

Integer ct = mp.get(st);

当 HashMap 实际上是空的时候,我们如何才能得到键映射到的值?我正在尝试将其与数组相关联——如果您在数组创建但未初始化后查询其元素,它会抛出一个空指针。有人,请解释一下这对 HashMap 是如何工作的。再次为提出这样一个基本问题而道歉。

最佳答案

好吧,在这一行中,您检查映射是否包含键

if (!mp.containsKey(st)) {

因为在表达式之前有一个 !,这意味着“如果映射不包含键”。之后,“then” block 跟随您在映射中插入值为 1 的键(因为它不存在)。

否则,如果该键确实存在(else block ),您将获取该键的值,将其递增(ct++),然后再次将其添加到映射中相同的 key 。

我只想说空检查 (if(ct!=null)) 对于此代码不是必需的。


关于这个问题的一般评论:

How can we get the value to which the key is mapped when infact the hashmap is actually empty?

如果您尝试从 HashMap 中为映射中不存在的键获取某些内容,映射将返回 null。对于您尝试从空映射中获取的任何键都是如此。


Can you please explain what this means though - Integer ct = mp.get(st);

map.get(key) 返回为该键存储的值。映射本身是键值对的集合,这意味着:对于每个键,映射中都有一个值。因此,要获取为该键存储的值,您可以调用 map.get(key)。如果您存储 map.put("ABC", 10) map 将为 map.get("ABC") 返回 10

关于java - HashMap 包含键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17249524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com