>  Q&A  >  본문

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中文网2764일 전429

모든 응답(3)나는 대답할 것이다

  • 天蓬老师

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

    큰 문제는 없지만 질문자의 코딩 스타일을 고려해 볼 수 있습니다. 디버그에 도움이 될 수 있음

    으아악

    회신하다
    0
  • PHP中文网

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

    프로젝트를 정리하고 Eclipse를 다시 시작해 보세요

    회신하다
    0
  • PHPz

    PHPz2017-04-18 10:26:15

    모두들 감사합니다. 저를 속인 것은 IDE였습니다. JDK 구문 자체에 Return이 없고 Android Studio의 디버그 모드에서 이러한 상황이 발생할 수 있습니다.

    멀티스레딩도 없습니다. 즉, 이 문제로 인해 더 많은 중단점을 누르지 마십시오.

    회신하다
    0
  • 취소회신하다