0

假设我有一个字符串数组。在数组中,如果不首先更改数组本身的大小,我们就无法添加或删除元素。我们可以更新数组的元素,但字符串是不可变的。所以我们实际上将有一个新的对象。

现在在不可变列表的情况下,同样如此,不能修改列表本身。但是,我们可以修改列表的对象。

那这两者有什么不同。我们什么时候应该更喜欢带有字符串的不可变列表。

4

2 回答 2

3

这里有两个方面:1)一般的不变性和2)List在Java中使用数组。

广告。1. 除了@Alex 提到的内容,请阅读JDK 文档中的“不可修改列表”段落(从 JDK9 开始,您可以根据需要使用开箱即用的不可变列表)和Guava wiki 上的ImmutableCollectionsExplained,以更好地了解不可变性如何用于Java 中的集合。

广告。2.如今要使用数组,您必须有特定的原因,因此请阅读Guava 首席开发人员 Kevin Bourrillion 2011 年的此答案(仍然有效)。

TL;DR:使用不可变列表。

于 2021-08-19T11:37:58.467 回答
1

当您要求不更改值时,您应该更喜欢带有字符串的不可变列表。正如您所说,字符串是不可变对象,因此您无法更改不可变列表中的字符串值。如果不可变列表包含可变对象,那么无论您使用不可变列表还是数组,都可以更改可变对象中的值。

于 2021-08-19T05:55:32.593 回答