java - HashMap<> 和 if else一起使用的问题.
PHP中文网
PHP中文网 2017-04-18 10:24:15
0
3
441
/**
 * 对 界面上显示的娱乐版块进行排序.(优先级)
 *
 * @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讲师

membalas semua(3)
Peter_Zhu

Saya tidak nampak sebarang masalah besar, tetapi penyoal boleh mempertimbangkan gaya pengekodan. Mungkin membantu Nyahpepijat

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;
}
洪涛

Bersihkan projek dan cuba mulakan semula eclipse

PHPzhong

Terima kasih semua, masalah telah diselesaikan IDE yang menipu saya Sintaks JDK itu sendiri tidak mempunyai Return dan kemudian Return Situasi ini mungkin berlaku dalam mod Nyahpepijat pada Android Studio.

Tiada multi-threading juga. Ringkasnya, jangan buta dengan masalah ini.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan