为什么我的LIST只能获得一个值?

totsheng 2008-12-26 10:58:15

List<Map> letterList = this.getHanton().getEmployeeDAO()
.getLetterName(comCode);
Map parent_dataMap = new HashMap();
Map dataMap = new HashMap();
List<Map> parent_datalist = new ArrayList<Map>();
for (Map m1 : letterList) {
parent_datalist = this.getHanton().getEmployeeDAO()
.getCompNameByLetterName(comCode,
m1.get("LETTER_NAME").toString());
parent_dataMap.put(m1.get("LETTER_NAME"), parent_datalist);

// List<Map> compList = this.getHanton().getEmployeeDAO()
// .getCompName(comCode);
}
for (Map m : parent_datalist) {
String test1 = m.get("COMP_NAME").toString();
List datalist = this.getHanton().getEmployeeDAO()
.findByCompName(comCode, m.get("COMP_NAME").toString(),
conkind);
// dataList.put("name", );
dataMap.put(m.get("COMP_NAME"), datalist);
// dataMap.put("numList",datalist.size());
}

代码如上,为什么我的parent_datalist只能获得一个值?
...全文
293 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
totsheng 2008-12-29
  • 打赏
  • 举报
回复
谢谢各位,问题解决了
只要把Map dataMap = new HashMap();
放在第一个FOR循环语句里就可以了!
bobskay 2008-12-26
  • 打赏
  • 举报
回复
说实话lz,按你这样写代码,就算这次给你改对了,以后还是会出问题的.
不知道为什么你所有东西都要放到Map里,建两个domain对象不行吗?
你的业务我不熟悉,我大概写了这么几个类,你参考以下.

还有通过comName或者letterName获得company应该单独放在一个类里

public class Company {
private String comName;
private String comCode;
private Letter letter;

public String getComName() {
return comName;
}

public void setComName(String comName) {
this.comName = comName;
}

public String getComCode() {
return comCode;
}

public void setComCode(String comCode) {
this.comCode = comCode;
}

public Letter getLetter() {
return letter;
}

public void setLetter(Letter letter) {
this.letter = letter;
}
}


public class Letter {
private List<Company> companys;

public List<Company> getCompanys() {
return companys;
}

public void setCompanys(List<Company> companys) {
this.companys = companys;
}


}


public interface CompanyService {
public Company getCompanyByName(String comName);

public List<Company> getCompanyByLeeter(Letter letter);
}

totsheng 2008-12-26
  • 打赏
  • 举报
回复
这样循环嵌套,我之前用了,可以每次传到页面的时候都把全部的内容显示出来了,并不是只得到我想要的部分!
页面传值代码如下:

this.setAttribute(request, "parent_datalist", parent_dataMap);
this.setAttribute(request, "datalist", dataMap);
totsheng 2008-12-26
  • 打赏
  • 举报
回复
确实是只获取到了 最后个一个值
duhongltz 2008-12-26
  • 打赏
  • 举报
回复
应该是你获得的最后那个值吧。改成如下试试

List<Map> letterList = this.getHanton().getEmployeeDAO()
.getLetterName(comCode);
Map parent_dataMap = new HashMap();
Map dataMap = new HashMap();
//List<Map> parent_datalist = new ArrayList<Map>();
for (Map m1 : letterList) {
List<Map> parent_datalist = this.getHanton().getEmployeeDAO()
.getCompNameByLetterName(comCode,
m1.get("LETTER_NAME").toString());
parent_dataMap.put(m1.get("LETTER_NAME"), parent_datalist);

// List<Map> compList = this.getHanton().getEmployeeDAO()
// .getCompName(comCode);

for (Map m : parent_datalist) {
String test1 = m.get("COMP_NAME").toString();
List datalist = this.getHanton().getEmployeeDAO()
.findByCompName(comCode, m.get("COMP_NAME").toString(),
conkind);
// dataList.put("name", );
dataMap.put(m.get("COMP_NAME"), datalist);
// dataMap.put("numList",datalist.size());
}
}
zhanggc1001 2008-12-26
  • 打赏
  • 举报
回复

for (Map m1 : letterList) {
parent_datalist = this.getHanton().getEmployeeDAO()
.getCompNameByLetterName(comCode,
m1.get("LETTER_NAME").toString());//这里总是获取个新的parent_datalist
parent_dataMap.put(m1.get("LETTER_NAME"), parent_datalist);

// List<Map> compList = this.getHanton().getEmployeeDAO()
// .getCompName(comCode);
}


检查一下这块代码吧,不清楚逻辑是什么,
parent_datalist = this.getHanton().getEmployeeDAO()
.getCompNameByLetterName(comCode,
m1.get("LETTER_NAME").toString());//这里总是获取个新的parent_datalist
software51 2008-12-26
  • 打赏
  • 举报
回复
有可能先前设计不够好,如果项目不是很大的话,建议重新翻倒再来!
棋盘 2008-12-26
  • 打赏
  • 举报
回复
楼主的代码让人看着头晕
wrong1111 2008-12-26
  • 打赏
  • 举报
回复
看看人家代码块里的业务逻辑吧
totsheng 2008-12-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bobskay 的回复:]
说实话lz,按你这样写代码,就算这次给你改对了,以后还是会出问题的.
不知道为什么你所有东西都要放到Map里,建两个domain对象不行吗?
你的业务我不熟悉,我大概写了这么几个类,你参考以下.

还有通过comName或者letterName获得company应该单独放在一个类里

Java code
public class Company {
private String comName;
private String comCode;
private Letter letter;

public String getComN…
[/Quote]
谢谢你的回复,可是我是在修改别人的代码,只能在相应的方法里做代码改动。
totsheng 2008-12-26
  • 打赏
  • 举报
回复
我感觉我低层数据库的设计可能有些问题,我下午准备把低层的SQL改改,然后用一个DATALIST传值到页面。
不用现在这种2个DATALIST的。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧