ConcurrentHashMap foreach循环问题

ayk*_*kut 4 java hashmap concurrenthashmap

我有一个名为users的concurrenthashmap.我有一些用户对象,其中包含一些不是id的整数键.我想找到具有给定ID的用户.因此,我检查hashmap的所有元素并返回用户对象(如果存在).这是我的代码:

    for(User u : users.values()) {
        logger.error("u.getId() : " + u.getId());
        logger.error("id : " + id );
        if( u.getId() == id ) {
            logger.error("match");
            return u;
        }
    }
    logger.error("Not found: id:" + id);
    for(User u : users.values()) {
        logger.error(u.getPos() + ". user: " + u.getId());
    }
Run Code Online (Sandbox Code Playgroud)

然而,即使我的u.getId()和id也很难,我在日志中看不到"匹配".

213匹配但不能输入以下if语句.这是我的日志:

在此输入图像描述

你怎么看待这件事?

Eug*_*hov 6

从User.getId()方法返回什么类型以及什么类型的id变量?如果它不是基本类型,则需要使用equals()而不是==.

顺便说一下,像FindBugs这样的好静态代码分析器可以找到这种错误.