如何将项目添加到POJO上的现有列表中

时间:2014-04-29 13:19:03

标签: java

我有一个类似于此的POJO

public class Color {
  public List<Shade> shades = new ArrayList();

  public setShades (List<Shade> shades) {this.shades = shades;}
  public List<Shade> getShades() {return this.shades;}
}

这样我只能通过列表添加阴影。意思是我只能这样做:

Color myColor = new Color();
List<Shade> myShades = new ArrayList();
myShades.add(new Shade("light"));
myColor.setShades(myShades);

但是,我希望能够直接添加到已设置的阴影列表中。像这样:

Color myFinalColor = new Color();
for (Color c : myColorList) {
  for (Shade s : myShade) {
    if (!("dark").equalsIgnoreCase(s.getName()))
       myFinalColor.addToShadeList(s); //This will add to the existing shade list. 
  }
}

我可以做这样的事情来实现我想要的东西,但看起来很麻烦。

Color myFinalColor = new Color();
for (Color c : myColorList) {
  for (Shade s : myShade) {
    if (!("dark").equalsIgnoreCase(s.getName())) {
       List<Shade> existingShades = myFinalColor.getShades();
       existingShades.add(s);
       myFinalColor.setShades(existingShades); 
    }
  }
}

2 个答案:

答案 0 :(得分:4)

为什么不这样做:

myFinalColor.getShades().add(s);

或者只是将addShade方法添加到Color类中,如下所示:

public void addShade(Shade shade) {
    shades.add(shade);
}

答案 1 :(得分:0)

这与

相同
Color myFinalColor = new Color();
List<Shade> existingShades = myFinalColor.getShades();
for (Shade s : myShade)
   if (!"dark".equalsIgnoreCase(s.getName()))
       existingShades.add(s);