List集合递归实现数据转移

hc_it2014 2015-03-25 02:02:51
走过路过的大牛们,请帮帮我这脑阻塞的患者吧!
我有一个bean是这个样子滴
public class ETree {
private String id;//主键
private String parentId;//类别标示(根节点为0,其余为对应跟几点id)
private String name;//名称
private long orderNum;//序号
private boolean open;//状态
private String iconClass;//界面图标标示
private String projectStatus;//项目状态
private List<ETree> children;//子项目集合

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getParentId() {
return parentId;
}

public void setParentId(String parentId) {
this.parentId = parentId;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public long getOrderNum() {
return orderNum;
}

public void setOrderNum(long orderNum) {
this.orderNum = orderNum;
}

public boolean isOpen() {
return open;
}

public void setOpen(boolean open) {
this.open = open;
}

public String getProjectState() {
return projectState;
}

public void setProjectState(String projectState) {
this.projectState = projectState;
}

public List<ETree> getChildren() {
return children;
}

public List<ETree> setChildren(List<ETree> children) {
return this.children = children;
}

public String getIconClass() {
return iconClass;
}

public void setIconClass(String iconClass) {
this.iconClass = iconClass;
}

}
我有一个实体是这个样子滴
public class EProjectEntity implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid2")
private String epId;//主键
private String epProjectname;//名称
private long epProjectsequence;//序号
private String epProjectstatus;//项目状态
private String epProjectparentid;//类别标示
private Date epCreatetime;//创建时间
private String epEnactmentname;//创建人姓名
private String epEnactmentid;//创建人ID
private String epIsenable;//是否启用过
private String epStatus;//记录状态

public String getEpId() {
return epId;
}

public void setEpId(String epId) {
this.epId = epId;
}

public String getEpProjectname() {
return epProjectname;
}

public void setEpProjectname(String epProjectname) {
this.epProjectname = epProjectname;
}

public long getEpProjectsequence() {
return epProjectsequence;
}

public void setEpProjectsequence(long epProjectsequence) {
this.epProjectsequence = epProjectsequence;
}

public String getEpProjectstatus() {
return epProjectstatus;
}

public void setEpProjectstatus(String epProjectstatus) {
this.epProjectstatus = epProjectstatus;
}

public String getEpProjectparentid() {
return epProjectparentid;
}

public void setEpProjectparentid(String epProjectparentid) {
this.epProjectparentid = epProjectparentid;
}

public Date getEpCreatetime() {
return epCreatetime;
}

public void setEpCreatetime(Date epCreatetime) {
this.epCreatetime = epCreatetime;
}

public String getEpEnactmentname() {
return epEnactmentname;
}

public void setEpEnactmentname(String epEnactmentname) {
this.epEnactmentname = epEnactmentname;
}

public String getEpEnactmentid() {
return epEnactmentid;
}

public void setEpEnactmentid(String epEnactmentid) {
this.epEnactmentid = epEnactmentid;
}

public String getEpIsenable() {
return epIsenable;
}

public void setEpIsenable(String epIsenable) {
this.epIsenable = epIsenable;
}

public String getEpStatus() {
return epStatus;
}

public void setEpStatus(String epStatus) {
this.epStatus = epStatus;
}

public static long getSerialversionuid() {
return serialVersionUID;
}

}
我想把 EProjectEntity 的全部集合List<EProjectEntity > 放入ETree 的集合List<ETree >中 请问怎么实现?
...全文
235 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
冥王之锤 2015-03-25
  • 打赏
  • 举报
回复
生成List<ETree >之后,再遍历List<ETree >处理,找子项目并设置父项目的子项。不必在转的时候处理。
hc_it2014 2015-03-25
  • 打赏
  • 举报
回复
递归成员变量产生数据冗余,脑袋一团浆糊,换个方式解决了,哈哈哈
hc_it2014 2015-03-25
  • 打赏
  • 举报
回复
遍历List<EProjectEntity > 转EProjectEntity 类型转换到 ETree ,生成List<ETree >。[/quote] 遍历List<EProjectEntity > 转EProjectEntity 这个步骤我能实现,EProjectEntity 转换成ETree中由于ETree中存在List<ETree > 我想到用递归来实现 ,但是递归产生内存溢出,想不明白怎么良性的实现递归 下面是我的递归方法,我知道是错的,但是不知道怎么改正 List<ETree> myList = new ArrayList<ETree>(); public List<ETree> getRecurrenceList(ETree tree1, List<EProjectEntity> list) { if (list == null || list.size() == 0) { return null; } else { Iterator<EProjectEntity> iter = list.iterator(); while (iter.hasNext()) { ETree tree = new ETree(); EProjectEntity item = iter.next(); tree.setId(item.getEpId()); tree.setParentId(item.getEpProjectparentid()); tree.setName(item.getEpProjectname()); tree.setProjectState(item.getEpProjectstatus()); tree.setOrderNum(item.getEpProjectsequence()); List<EProjectEntity> children = getEProjectEntityByParentId(item .getEpId()); if (children.isEmpty()) { tree.setOpen(false); } else { tree.setOpen(true); tree.setChildren(getRecurrenceList(tree, children)); } myList.add(tree); } } return myList; }
冥王之锤 2015-03-25
  • 打赏
  • 举报
回复
EProjectEntity 类型转换到 ETree ,这步自己先实现。 遍历List<EProjectEntity > 转EProjectEntity 类型转换到 ETree ,生成List<ETree >。

62,612

社区成员

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

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