6

我最近发现您可以通过调用Collections.nCopies()方法而不是使用 for 循环来初始化 Java 中的列表。但这让我想知道,在 for 循环中使用这种方法是否有性能优势/劣势,或者它只是做同样事情的一种更简单的方法?

4

2 回答 2

10

由于返回的集合nCopies是不可变的,因此该集合中的条目不需要“物化”。换句话说,只需要一个空间来存放一个类型的对象T;其他一切都是集合接口的实现,它假装有一个N对象集合,但实际上只有一个对象,它返回N时间。

for当您创建的集合很大时,这可能会为您带来很大的空间改进:事实上,与您使用循环初始化的真实集合相比,集合越大,您的节省就越大。

于 2013-08-31T01:15:17.513 回答
0

当您使用 nCopies() 作为 List 构造函数的参数时,不变性不是问题:构造函数创建一个副本,该副本不是不可变的。

于 2015-11-04T15:43:11.993 回答