gpt4 book ai didi

java - java中可以使用list来实现复合模式吗?

转载 作者:行者123 更新时间:2023-12-01 09:21:14 25 4
gpt4 key购买 nike

我想要实现一个复合模式,其中对象 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">

下午
TL
员工

此列表被传递到同一类中的另一个方法,其中另一个列表用于根据级别从列表中检索值。

List<Entity> subset = new ArrayList<Entity>();
for (Entity val : a) {


if (val.getLevel()>=level) {
subset.add(val);
}

我的bean类是

公共(public)类实体{

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;
}

最佳答案

实现您想要的内容的一种优雅方法是实现 toString() 方法,如下所示。您可能还想对其他字段使用append(),而不是用+ 连接字符串。出于懒惰的原因,我只是复制了您的代码。您可以将
或其他格式标记添加到 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();
}

关于java - java中可以使用list来实现复合模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40153004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com