您可以在用户定义的构造函数中填充 List<Integer> 吗?

SiD*_*ing 2 java collections arraylist

我是 Java 新手,希望就在List<Integer>用户定义的构造函数中实例化数组提供一些建议。

例如:

import java.util.*;

public class Sample {

    // variables
    private List<Integer> myList = new ArrayList<>(); 
    
    // constructor
    // list of values something like (1,2,3,4,5)
    public Sample(List<Integer> listOfValues)
    {

        {
            myListArrays.addAll(Arrays.asList( listOfValues ));
        }   
    }
        
}
Run Code Online (Sandbox Code Playgroud)

所以我的构造函数调用将是:

Sample s = new Sample((1,2,3,4,5));
Run Code Online (Sandbox Code Playgroud)

是否可以执行上述操作,或者是否有这种类型的分配的替代方法?

And*_*eas 5

如果您想拨打这样的电话,那么您需要使用varargs

public Sample(Integer... listOfValues)
{
    myListArrays.addAll(Arrays.asList(listOfValues));
}
Run Code Online (Sandbox Code Playgroud)
Sample s = new Sample(1,2,3,4,5);
Run Code Online (Sandbox Code Playgroud)

另请参阅:Java 中的可变参数 | 贝尔东

  • @StudentAccount4 由 `Arrays.asList()` 创建的列表是如此短暂,它是否创建一个新对象并不重要。如果你想“优化”它,你可以使用“if”语句跳过整个“addAll()”调用,并且无论如何都不会使用“Collections.emptyList()”,所以我不知道为什么会这样甚至被提到与此代码相关。除非您创建大量“示例”实例,否则这种微观优化是一种浪费。即使你这样做了,与其他所有东西相比,跳过那个小东西也是微不足道的,你可能永远无法分辨出区别。 (2认同)