将数组添加到 ArrayList

Adding an Array to an ArrayList

大家好!我正在制作一款名为 DoorElementals 的游戏,我想这样做:

ArrayList<Color> colors = new ArrayList<Color>();
public Door(Color... colors) {
  this.colors.add(colors);
}
public void addColor(Color... c){
  this.colors.add(c);
}

但是 colors 是一个数组,而 this.colors 是一个 ArrayList。 我该怎么办?

java.util.Arrays class 提供了一种将数组转换为 List 的方法。

ArrayList<Color> colors = new ArrayList<Color>();
public Door(Color... colors) {
   this.colors.addAll(Arrays.asList(colors));
}
public void addColor(Color... c){
   this.colors.addAll(Arrays.asList(c));
}

更好的做法是让您的构造函数采用 Collection 而不是使用可变参数。

List<Color> colors = new ArrayList<Color>();
public Door(Collection<Color> colors) {
   this.colors.addAll(colors);
}

请勿使用 Arrays.asList。根据调用的次数,它会影响性能,因为每次调用 asList 方法时,都会创建一个新的 List

您可以而且应该使用:

public Door(Color... colors) {
  addAll(colors);
}

public void addAll(Color... colors) {
  for (Color color : colors) {
    myList.add(color);
  }
}