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

bir*_*rdy 3 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;}
}
Run Code Online (Sandbox Code Playgroud)

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

Color myColor = new Color();
List<Shade> myShades = new ArrayList();
myShades.add(new Shade("light"));
myColor.setShades(myShades);
Run Code Online (Sandbox Code Playgroud)

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

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. 
  }
}
Run Code Online (Sandbox Code Playgroud)

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

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); 
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Jak*_*b H 5

你为什么不这样做:

myFinalColor.getShades().add(s);
Run Code Online (Sandbox Code Playgroud)

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

public void addShade(Shade shade) {
    shades.add(shade);
}
Run Code Online (Sandbox Code Playgroud)