我最近发现您可以通过调用Collections.nCopies()
方法而不是使用for循环来初始化Java中的列表。但这让我想知道,在for-loop中使用这种方法是否有性能优势/劣势,还是只是一种更简单的方法来做同样的事情?
答案 0 :(得分:6)
由于nCopies
返回的集合是不可变的,因此该集合中的条目不需要“具体化”。换句话说,所需要的只是T
类型的单个对象的空间;其他一切都是集合接口的一个实现,假装有一个N
个对象的集合,但实际上只有一个对象返回N
次。
当您创建的集合很大时,这可能会给您带来很大的空间改进:实际上,集合越大,与您使用{{1初始化的真实集合相比,您的节省就越大循环。
答案 1 :(得分:0)
当您使用nCopies()作为List构造函数的参数时,不变性不是问题:构造函数创建一个不是不可变的副本。