构造函数中的String []或ArrayList?

时间:2012-05-15 07:45:04

标签: java arrays arraylist

我必须为ArrayList创建一个构造函数。基本上我想要的是这个构造函数创建一个ArrayList。

    public Recipe(String[] modifications){

The problem is, it should give something like(example):

String[] modifications = [heatup, cooldown, mix, heatup]

构造函数是否会像这样工作:

    Recipe(heatup, cooldown, mix, heatup)

或者我是否需要将其更改为某些东西,如:

    Recipe(modifications){
    this.myArrayList[1] = modifications[1]
    .
    .
    .
    }

非常感谢,如果我的代码中存在一些重大错误,仍然在学习我的Java代码。

7 个答案:

答案 0 :(得分:4)

您可以这样定义:

public Recipe(String... modifications)

这将为您提供一个变量参数列表,因此您的构造函数将如下所示:Recipe(heatup, cooldown, mix)

在构造函数内部,您可以像使用数组一样使用它。

答案 1 :(得分:2)

将构造函数更改为varargs:

public Recipe(String ... modifications){

然后您可以modifications访问String[],但这是一个数组,而不是ArrayList。如果您需要ArrayList,请执行以下操作:

private final List<String> list;
public Recipe(String ... modifications){
    this.list = new ArrayList<String>(Arrays.asList(modifications));
}

答案 2 :(得分:2)

你可以使用varargs参数创建一个构造函数:

public Recipe(String... modifications){...}

然后你可以这样称呼它:

Recipe(heatup, cooldown, mix, heatup);

请注意,如果您(计划)有其他构造函数具有可能存在冲突的参数列表,则应该小心使用varargs参数。但是,如果这是你唯一的构造函数,那么varargs应该没问题。

答案 3 :(得分:2)

你可以在构造函数中使用

ArrayList<String> list=new ArrayList<String>();
        public Recipe(String[] modifications){

   // String a[]={"asas"};

            list.addAll(Arrays.asList(modifications));

答案 4 :(得分:2)

第二个......当然,如果您只想复制元素,可以使用for

此外,您可以将参数传递的数组复制到类属性/方法变量中,除非有其他动机不这样做。

最后,请记住它会像Recipy(String[] modifications) {。您必须定义参数的类型。

现在终于,myArrayList是一个有点不幸的数组名称(API中有一个名为ArrayList的类)。

答案 5 :(得分:2)

你想要的是能够传递不确定数量的参数:

public Recipe(String ... modifications) {

在构造函数中,修改是一个数组。

这将适用于此:

new Recipe("heatup", "cooldown", "mix", "heatup");

并且用这个:

new Recipe();

并且用这个:

new Recipe("heatup", "mix");

答案 6 :(得分:2)

您可以使用varargs

public Recipe(String ... modifications) {
  // now you can use modifications as an array
  for (int f = 0; f < modifications.length; f++) {
     System.out.println("#" + f + ": " + modifications[f]);
  }
}

要使用你的课,你只需写:

  Recipe myRecipe = new Recipe("heatup", "mix");