这项工作正在谈论30多个小时的时间。该迭代器可容纳80万条记录,并且循环必须为每条记录执行,并且在同一方法中大约有20多个这些检查。在这里如何避免圈复杂度?

CustomerPreference newRecord = null;

while (iterator.hasNext())
              {

final CustomerPreference current = iterator.next();

                     if (newRecord != null)
                     {
                           if (!newRecord.getEmail().equals(current.getEmail()))
                           {
                                  resList.add(newRecord);
                                  newRecord = current;
                           }
                     }
                     else
                     {
                           newRecord = current;
                     }

                     if (null != current.getEmailPref())
                     {
                           newRecord.setEmailPref(current.getHdCaEmailPref());
                     }

              else
                     {
                           if (newRecord.getEmailPref() == null)
                           {
                             newRecord.setEmailPref(NO_CHANGE);
                           }
                     }

最佳答案

如果这只是一个内部应用程序,请进行检查并将代码包含在try / catch块中,尤其是在空引用的可能性很小的情况下。

catch块将继续循环。

08-18 19:30