Map<Integer,List> scaleLatMap = new LinkedHashMap<Integer,List>();


while(it4.hasNext()){
TdScalelatRel tdScalelatRel = it4.next();
Integer latId = tdScalelatRel.getTdLat().getLatid();
Integer scaleId = tdScalelatRel.getAssScale().getScaleid();
String latName = tdScalelatRel.getTdLat().getName();
latMap.put(latId, latName);
//得到纬度的名字



List<Integer> scaleLatList = scaleLatMap.get(scaleId);


if(scaleLatList == null){
scaleLatList = new ArrayList<Integer>();
scaleLatMap.put(scaleId, scaleLatList);}
scaleLatList.add(latId);

}

解决方案 »

  1.   

    首先,  List<Integer> scaleLatList = scaleLatMap.get(scaleId);里面什么也没有
      

  2.   

    代码不全,如何解释?
    scaleLatMap、it4怎么来的?
      

  3.   

    是每个都没有吗?
    就是一个scaleLatMap 的过程吗。
      

  4.   

    /*
     * 创建日期 2007-4-24
     *
     * 更改所生成文件模板为
     * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
     */
    package com.comstars.ass.corp.action;import java.util.*;
    import org.apache.struts.action.Action;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    //import com.comstars.hibernate.util.*;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;import com.comstars.hibernate.databean.CorpBase;
    import com.comstars.hibernate.databean.TdCorpsacleRel;
    import com.comstars.hibernate.databean.TdGci2Option;
    import com.comstars.hibernate.databean.TdScalelatRel;
    import com.comstars.ass.corp.form.AssForm;
    import com.comstars.hibernate.databean.AssScale;
    import net.sf.hibernate.*;import com.comstars.hibernate.util.DBHandle;/**
     * @author admin
     * @时间 17:00:44
     * 更改所生成类型注释的模板为
     * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
     */
    public class AssAddAction extends Action {
    public ActionForward execute(
    ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response)
    throws Exception {
    Session session = DBHandle.currentSession();

    // Criteria criteria = session.createCriteria(TdCorpsacleRel.class);
    //取得corpId
    HttpSession httpSession = request.getSession();
    Integer corpId = (Integer)httpSession.getAttribute("CORPID");
    CorpBase corpBase = (CorpBase)session.load(CorpBase.class,corpId);

    String hql ="select c.assScale from TdCorpsacleRel as c where c.corpBase.corpid=? and c.assScale.type=?";
     Query query = session.createQuery(hql);
     
     
      query.setInteger(0,corpId.intValue());
    //公司id
      query.setInteger(1,0);
     //类型 哪一个纬度比如留学
       List list1 = query.list(); 

    String hql3 =" from TdGci2Option ";
    Query query3 = session.createQuery(hql3);
    Iterator<TdGci2Option> it3= query3.iterate();
    Map<Integer,String> descriptionMap = new LinkedHashMap<Integer,String>();
    while(it3.hasNext()){
    TdGci2Option option = it3.next();

    descriptionMap.put(option.getTdLat().getLatid(), option.getDescription());
    //对应的维度描述

    }
    request.setAttribute("descriptionMap", descriptionMap);

    Map<Integer,String> latMap = new LinkedHashMap<Integer,String>();
    String hql4 =" from TdScalelatRel a where a.assScale.scaleid <= 25 and a.assScale.scaleid >= 16  ";
    Query query4 = session.createQuery(hql4);
    Iterator<TdScalelatRel> it4= query4.iterate();

    Map<Integer,List> scaleLatMap = new LinkedHashMap<Integer,List>();


    while(it4.hasNext()){
    TdScalelatRel tdScalelatRel = it4.next();
    Integer latId = tdScalelatRel.getTdLat().getLatid();
    Integer scaleId = tdScalelatRel.getAssScale().getScaleid();
    String latName = tdScalelatRel.getTdLat().getName();
    latMap.put(latId, latName);
    //得到纬度的名字
    List<Integer> scaleLatList = scaleLatMap.get(scaleId);


    if(scaleLatList == null){
    scaleLatList = new ArrayList<Integer>();
    scaleLatMap.put(scaleId, scaleLatList);}
    scaleLatList.add(latId);

    }
    request.setAttribute("latMap", latMap);
    request.setAttribute("scaleLatMap", scaleLatMap);




     
    query.setInteger(1,1); 
    List list2 = query.list();
        
    query.setInteger(1,2); 
    List list3 = query.list();
    query.setInteger(1,3); 
    List list4 = query.list();
     
    //招聘组手

    System.out.println(list2.size()+"list2.size()list2.size()list2.size()list2.size()");
     
    DBHandle.closeSession();
    AssForm assForm = (AssForm)form; 
    assForm.reset();
    assForm.setIswatch(new Integer(0));
    httpSession.setAttribute("CORPCLICKNUMBER", new Integer(1));
    request.setAttribute("scaleList1",list1);
    request.setAttribute("scaleList2",list2);
    request.setAttribute("scaleList3",list3);
    request.setAttribute("scaleList4",list4);
    /**
     * 
     */
        return mapping.findForward("assUserAdd");
    }
    }
      

  5.   

    的确最开始的时候scaleLatMap是new出来的里面什么也没有
    但是你要看下文
     if (scaleLatList == null) {
                        scaleLatList = new ArrayList < Integer >();
                        scaleLatMap.put(scaleId, scaleLatList);
                    }
    这是有判断的,也就是说这是一个先从这个scaleLatMap中获取,如果有了就不填加,如果没有就填加的过程
      

  6.   

    没有空指针保护,代码貌似很不安全while(it4.hasNext()){
         TdScalelatRel tdScalelatRel = it4.next();
         
    不需要第一条?
      

  7.   

    看懂了,这是一个算法的问题,你,  List <Integer> scaleLatList = scaleLatMap.get(scaleId);里面什么也没有 当初,什么也没有,后来就慢慢 的加上了,这是一个一对多的问题,这是map的key value,
      

  8.   

    代码是正常的
    第一次的时候是没有,但是后面new了一个list,加入了map
    最后给list添加了当前值
    source正常
    你需要了解下地址传递与值传递的问题了。