java - HashMap<> 和 if else一起使用的问题.
PHP中文网
PHP中文网 2017-04-18 10:24:15
0
3
446
/**
 * 对 界面上显示的娱乐版块进行排序.(优先级)
 *
 * @return
 */
private  BaseMessage entertainmentSort() {
    int size = mEntertainmentMap.size();
    BaseMessage baseMessage = null;
    if (size > 0) {
        if (mEntertainmentMap.containsKey(TypeCst.LiveEntertainmentType.LIVE_TYPE_AUCTION)) {
            baseMessage = mEntertainmentMap.get(TypeCst.LiveEntertainmentType.LIVE_TYPE_AUCTION);
        } else if (mEntertainmentMap.containsKey(TypeCst.LiveEntertainmentType.LIVE_TYPE_GUESS)) {
            baseMessage = mEntertainmentMap.get(TypeCst.LiveEntertainmentType.LIVE_TYPE_GUESS);
        } else if (mEntertainmentMap.containsKey(TypeCst.LiveEntertainmentType.LIVE_TYPE_BET_VS)) {
            baseMessage = mEntertainmentMap.get(TypeCst.LiveEntertainmentType.LIVE_TYPE_BET_VS);
        } else if (mEntertainmentMap.containsKey(TypeCst.LiveEntertainmentType.LIVE_TYPE_BET_CONTENT)) {
            baseMessage = mEntertainmentMap.get(TypeCst.LiveEntertainmentType.LIVE_TYPE_BET_CONTENT);
        } else {
            baseMessage = null;
        }
    } else {
        baseMessage = null;
    }
    return baseMessage;
}


先帖一波代码,这样运行HashMap 为什么 会出现 打断点 已经进入else if 然后又返回到另一个else if 什么鬼....

tips: 开始以为是同步 或者线程锁的问题,但是更换HashTable和其他并发 同步 容器 ,问题还没有解决 ..

求大神 相助,我仔细检查代码 是没问题的啊.

详细描述下问题:怕大家看不懂,就是 已经执行第三个else if ,下一步 直接返回到第二个else if.

我把每个else if都打印了线程ID ,没发现子线程 也枷锁了 .

PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(3)
Peter_Zhu

Je ne vois pas de gros problèmes, mais la personne qui pose la question pourrait considérer le style de codage. Pourrait aider au débogage

private  BaseMessage entertainmentSort() {
    if (!mEnterainmerntMap.isEmpty()) {
        TypeCst.LiveEntertaimmentType[] types = new TypeCst.LiveEntertainmentType[]{TYPE_ACTION, TYPE_GUESS, TYPE_BET_VS, TYPE_BET_CONTENT};
        for (TypeCst.LiveENtertainmentType type : types) {
            if (mEnterainmerntMap.containsKey(type))
                return mEnterainmerntMap.get(type);
        }        
    }
    return null;
}
洪涛

Nettoyez le projet et essayez de redémarrer Eclipse

PHPzhong

Merci à tous, le problème a été résolu. C'est l'IDE qui m'a trompé. La syntaxe du JDK elle-même n'a pas Return puis Return. Cette situation peut se produire en mode Debug sur Android Studio.

Il n'y a pas de multi-threading non plus. Bref, ne soyez pas aveuglé par ce problème.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal