我希望实现一个复合模式,其中将对象emp添加到tl然后将tl添加到pm。我的列表应该只包含pm对象,其中的其余对象按顺序存储。
但是当我迭代并尝试打印时,它只显示pm的值而不显示其他两个对象值。
在这里,在一个pm对象下我需要两个tl对象,在一个tl下我需要三个emp对象。
List<Entity> ls = new ArrayList<Entity>();
Entity pm = new Entity();
Entity tl = new Entity();
Entity emp = new Entity();
int i = 0, j = 0, k = 0;
for (i = 1; i <= 3; i++) {
emp = new Entity("Associate" + i, "Salem", 7563214, 3);
// ls.add(obj);
for (j = 1; j <= 2; j++) {
tl = new Entity("TL" + j, "Chennai", 4756921, 2);
tl.adds(emp);
// ls.add(obj);
for (k = 1; k <= 3; k++) {
pm = new Entity("PM"+ k, "Erode", 5693214, 1);
pm.adds(tl);
ls.add(pm);
}
}
}
这里每个构造函数中的最后一个值定义级别。我的JSP中有一个按钮,点击了该级别。
<div id="company" style="display:none">
PM <
TL
此列表ls被传递给同一个类中的另一个方法,其中另一个列表用于根据级别从列表中检索值。
List<Entity> subset = new ArrayList<Entity>();
for (Entity val : a) {
if (val.getLevel()>=level) {
subset.add(val);
}
我的bean类是
公共类实体{
private String name;
private String dept;
private int phNum;
private int level;
private List<Entity> entityList;
public Entity(){}
public Entity(String name,String dept, int phNum,int level) {
this.name = name;
this.dept = dept;
this.phNum = phNum;
this.level = level;
entityList = new ArrayList<Entity>();
}
public void adds(Entity e) {
entityList.add(e);
}
public List<Entity> getEntityList(){
return entityList;
}
答案 0 :(得分:1)
实现所需内容的优雅方法是实现toString()方法,如下所示。您可能也想对其他字段使用append(),而不是使用+连接字符串。 在这里,我只是为了懒惰而复制了你的代码。 你可以拥有&lt; BR&gt;或者其他格式化标签添加到StringBuilder中,以便很好地格式化打印数据。
public String toString(){
StringBuilder stringRep = new StringBuilder().append(" Name : " + name + ", dept : " + dept + ", ph num :" + phNum+" ");
for(Entity subEntity:entityList){
stringRep.append(subEntity.toString());
}
return stringRep.toString();
}