Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在使用构造函数声明期间初始化引用数组_Java_Arrays_Arraylist_Constructor - Fatal编程技术网

Java 在使用构造函数声明期间初始化引用数组

Java 在使用构造函数声明期间初始化引用数组,java,arrays,arraylist,constructor,Java,Arrays,Arraylist,Constructor,我有一个自定义对象Point,它的构造函数参数被指定为Point(intx,inty) 我想要一个由十个不同点组成的数组,每个点都应该使用构造函数初始化为(13,27)位置 Point[] points = new Point[10]; for (Point point : points) { point = new Point(13, 27); } 我不喜欢在第一行和第二行之间有一个nulls数组 我可以用一个线性函数,用我的构造函数声明并初始化一个引用数组吗 以下方法可行,但我们可

我有一个自定义对象
Point
,它的构造函数参数被指定为
Point(intx,inty)

我想要一个由十个不同点组成的数组,每个点都应该使用构造函数初始化为
(13,27)
位置

Point[] points = new Point[10];
for (Point point : points) {
    point = new Point(13, 27);
}
我不喜欢在第一行和第二行之间有一个
nulls
数组

我可以用一个线性函数,用我的构造函数声明并初始化一个引用数组吗

以下方法可行,但我们可以看到其存在的问题:

Point[] points = new Point[] {
    new Point(10, 10),
    new Point(10, 10),
    new Point(10, 10),
    /// <7 more points omitted>
};
点[]点=新点[]{
新观点(10,10),
新观点(10,10),
新观点(10,10),
/// 
};
我还想知道一个带有
List
的解决方案,比如
ArrayList

在C++中,我会做如下:<代码> STD::向量点{ 10,点{ 13, 27 };<代码>


编辑:我需要我的数组保存对10个不同(但相等)的
对象的引用。

您可以使用java streams生成数组:

Point[] points = Stream.generate(() -> new Point(13,27)).limit(10).toArray(Point[]::new);

编辑:您需要10个不同的对象。你可以和我一起去,也可以和我一起去。或者,如果您可以暂时使用包含
null
值的数组:

    Point[] points = new Point[10];
    Arrays.setAll(points, index -> new Point(13, 27));
对我来说,在初始化之前保持
null
s似乎没有那么糟糕,而且在流解决方案中也会发生这种情况

我最初的答案给出了一个数组,其中10个引用指向同一个
对象。这可能不是一个人马上就能看到的任务代码,但我认为它可读性很好:

    Point[] points = Collections.nCopies(10, new Point(13, 27)).toArray(new Point[0]);
因为Java 11更清楚一些:

    Point[] points = Collections.nCopies(10, new Point(13, 27)).toArray(Point[]::new);

<> p>它在我看来也类似于你的C++方式。< /p>这能回答你的问题吗?SabareeshMuralidharan不幸的是,我没有处理原语。这个帮助点[]点=新点[10];数组。填充(点,新点(13,27))@Joni Repeation?您是否需要10个不同的
对象(以便您以后可以单独修改每个对象),还是需要10个对同一
对象的引用?