Java 中的 Collections.nCopies()

Java 中的 Collections.nCopies()

Java 语言中的 Collections 类提供了多种操作集合的方法,其中就包括 nCopies() 方法。nCopies() 方法可以创建并返回一个不可变的 List 集合,其中包含指定数量的相同元素。

用法

该方法定义如下:

public static <T> List<T> nCopies(int n, T o)

其中,nCopies() 方法的参数包括两个,分别表示复制元素的数量和要复制的元素。方法返回一个不可变的 List 集合。可以看下面的示例代码:

import java.util.Collections;
import java.util.List;

public class Main {
  public static void main(String[] args) {
    List<Integer> list = Collections.nCopies(5, 100);
    for (int i : list) {
      System.out.println(i);
    }
  }
}

上面的示例代码创建了一个包含 5 个元素的 List 集合,集合中每个元素都是整型 100。可以发现,nCopies() 方法返回一个不可变的 List 集合,我们不能修改这个集合中的元素。

同时,也可以通过 nCopies() 方法创建一个包含多个null元素的 List 集合,示例如下:

import java.util.Collections;
import java.util.List;

public class Main {
  public static void main(String[] args) {
    List<Integer> list = Collections.nCopies(5, null);
    for (Integer i : list) {
      System.out.println(i);
    }
  }
}

上面的代码创建了一个包含 5 个 null 元素的 List 集合。

特点

nCopies() 方法创建的 List 集合是不可变的,无法进行修改操作,包括添加、修改、删除操作都不被支持。如果尝试执行这些操作,程序会抛出 UnsupportedOperationException 异常。

因此,nCopies() 方法返回的 List 集合只适合读取和遍历操作,不适合执行发生结构变化的操作。

此外,nCopies() 方法创建的所有元素具有相同的值和相同的引用。也就是说,如果创建一个包含 5 个 null 元素的 List 集合,这 5 个元素在内存中都会使用相同的引用。

示例

下面通过几个示例来说明如何使用 nCopies() 方法:

示例一:创建包含相同元素的 List 集合

以下代码演示了如何使用 nCopies() 方法创建一个包含相同元素的 List 集合。

import java.util.Collections;
import java.util.List;

public class Main {
  public static void main(String[] args) {
    List<Integer> list = Collections.nCopies(5, 100);
    for (Integer i : list) {
      System.out.println(i);
    }
  }
}

输出结果如下:

100
100
100
100
100

示例二:创建包含 null 值的 List 集合

以下代码演示了如何使用 nCopies() 方法创建一个包含 null 值的 List 集合。

import java.util.Collections;
import java.util.List;

public class Main {
  public static void main(String[] args) {
    List<Integer> list = Collections.nCopies(5, null);
    for (Integer i : list) {
      System.out.println(i);
    }
  }
}

输出结果如下:

null
null
null
null
null

示例三:更新 nCopies() 方法创建的 List 集合

以下代码演示了如何尝试更新 nCopies() 方法创建的 List 集合。

import java.util.Collections;
import java.util.List;

public class Main {
  public static void main(String[] args) {
    List<Integer> list = Collections.nCopies(5, 100);
    list.set(2, 200);
  }
}

运行时报错如下:

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.set(AbstractList.java

结论

Java 中的 Collections.nCopies() 方法提供了一种简便的方式来创建包含相同元素的 List 集合,同时也可以创建包含 null 元素的集合。由于创建的集合是不可变的,因此不支持添加、修改、删除等操作,只适合读取和遍历。如果需要一个可变的 List 集合,则需要使用其他方法来创建。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程