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个对同一点
对象的引用?