A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


private HashMap<String, List<Tsbdept>> assortListByDeptFy(
                         List<Tsbdept> deptList) {
                 HashMap<String, List<Tsbdept>> typeList = null;
                 if (deptList != null && deptList.size() > 0) {
                         typeList = new HashMap<String, List<Tsbdept>>();
                 }
                 List fyList = null;
                 for (int i = 0; i < deptList.size(); i++) {
                         String deptStr = deptList.get(i).getFtypename();
                         if (GlobalFun.hasValue(deptStr)) {
                                 if (i == 0 || !typeList.containsKey(deptStr)) {
                                         fyList = new ArrayList<Tsbdept>();
                                         typeList.put(deptStr, fyList);
                                         fyList.add(deptList.get(i));
                                 } else {
                                         List<Tsbdept> tempList = typeList.get(deptStr);
                                         tempList.add(deptList.get(i));
                                         System.out.println(tempList.equals(fyList));
                        
                                }
                                 
                        } else {
                                 fyList = new ArrayList<Tsbdept>();
                                 typeList.put(" ", fyList);
                                 fyList.add(deptList.get(i));
                         }
                 }
                 return typeList;
         }
打印结果为什么等于true?数据是当i=0的时候进入if条件句,其余都进入else,为什么fyList和deptList最后的结果是对的,而不是只有i=0时的值。

2 个回复

倒序浏览

在你这段代码里,前面的条件都满足的情况下

        if (i == 0 || !typeList.containsKey(deptStr)) {//-------1
             fyList = new ArrayList<Tsbdept>();
             typeList.put(deptStr, fyList);
             fyList.add(deptList.get(i));
        } else {
             List<Tsbdept> tempList = typeList.get(deptStr);//------2
             tempList.add(deptList.get(i));//------3
             System.out.println(tempList.equals(fyList));
        }

当i==0就运行,if里面的语句,执行完后,i的值自增1:i=1;那么第二次运行i不满足if的条件,就去执行else里面的语句,而你获取typeList.get(deptStr)里面的一个值给tempList ,而你在第三又把deptList.get(i)的一个值添加到tempList.add里,这时tempList在比较的时候就会返回为true;  我是这样理解的也不知道有没有错,希望对你有所帮助
回复 使用道具 举报
String deptStr = deptList.get(i).getFtypename();
哥们你这个方法是返回的什么值啊? 看了下你的程序 问题应该是出在if条件的判断那里
   if (i == 0 || !typeList.containsKey(deptStr))  当||前面条件不满足  后面条件满足的情况下 也会进入到 if 语句中的

                int a = 1;
                int b = 2;
                if (a==0||b==2)
                {
                        System.out.println("show ME!");
                }
希望能帮到你的忙
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马