我有一个大小为10的ArrayList l1.我将l1赋给新的列表引用类型l2.l1l2会指向相同的ArrayList对象吗?还是将ArrayList个对象的副本分配给l2

在使用l2引用时,如果我更新List对象,它还会反映l1引用类型中的更改.

例如:

List<Integer> l1 = new ArrayList<Integer>();
for (int i = 1; i <= 10; i++) {
    l1.add(i);
}

List l2 = l1;
l2.clear();

除了创建2个列表对象,并从旧到新复制集合之外,没有其他方法可以将列表对象的副本分配给新的引用变量吗?

推荐答案

是的,作业(job)将把l1中的value复制到l2.它们都指同一个对象.

不过,创建一个浅拷贝非常简单:

List<Integer> newList = new ArrayList<>(oldList);

(举个例子.)

Java相关问答推荐

@GetMapping和@GetExchange有什么区别?

当切换javaFX场景时,stage的大小正在Minimize

Quarkus keycloat配置不工作.quarkus. keycloak. policy—enforcer. enable = true在. yaml表示中不工作

Spring Batch 5-不要让它在数据库中自动创建表

如何找到MongoDB文档并进行本地化?

更新GWT 2.5.1到2.11.0和sencha GXT 3.1.1到4.1时出现错误

在Spring Boot中使用哪个Java类来存储创建时间戳?

由于 list 中的权限错误,Android未生成

为什么Java编译器不区分不同类型的方法?

我如何知道MediaDiscoverer何时完成发现介质?

每次FXMLLoader调用ApplationConext.getBean(类)时创建@Component的新实例

扩展视图高度,并将其拖动到较低的视图上,而不是将其向下推?

是否在settings.xml中使用条件Maven镜像?

记录是类的语法糖吗?

使用MediaPlayer类在一段时间后停止播放音乐

为什么JavaFX MediaPlayer音频播放在Windows和Mac上运行良好,但在Linux(POPOS/Ubuntu)上却有问题?

无法在IntStream上应用Collectors.groupingBy

H2数据库仅支持%1个结果集?

Java System.getProperty在哪里检索user.home?

如何使用我的RLE程序解决此问题