Collections.nCopies()与For循环初始化

时间:2013-08-31 01:08:42

标签: java performance collections

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

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:0)

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