Rumah  >  Soal Jawab  >  teks badan

java - HashMap<> 和 if else一起使用的问题.

/**
 * 对 界面上显示的娱乐版块进行排序.(优先级)
 *
 * @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中文网2713 hari yang lalu391

membalas semua(3)saya akan balas

  • 天蓬老师

    天蓬老师2017-04-18 10:26:15

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

    balas
    0
  • PHP中文网

    PHP中文网2017-04-18 10:26:15

    Bersihkan projek dan cuba mulakan semula eclipse

    balas
    0
  • PHPz

    PHPz2017-04-18 10:26:15

    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.

    balas
    0
  • Batalbalas