我只是对Google番石榴的Lists类实现感到好奇,我们有两种方法可以从Array创建List,
Lists.asList(E first, E[] rest)
Lists.asList(E first, E second, E[] rest)
为什么这些方法首先要分别休息?不能像Java的Arrays.asList实现吗?
我唯一能看到的是第一和第二个是可为空的,其余的不是可为空的
任何人都可以帮助您理解吗?
好,所以Lists.asList()的工作不仅仅是将数组转换为列表。
假设我们有一个数组,并且我们想向其中插入一个元素,因为数组大小是固定的,所以我们不能这样做。解决此问题的一种方法是分配一个新数组,该数组的大小为原始数组的+1,并将所有元素从原始数组复制到新数组。这有效,但是效率很低。
[Guava提供了有效的解决方案-Guava的
Lists.asList()
方法返回了一个不可修改的列表,该列表由原始数组支持,该数组还包含指定的元素。
来源:https://www.techiedelight.com/guava-lists-class-java/
因此,基本上,您可以通过将第一个和/或第二个参数(取决于所使用的方法)设置为空,并将“ rest”参数设置为数组来使用它来转换数组。
这将返回您的数组作为列表。 (这可能是您在做什么)。
但是,如果您愿意,可以使用相同的方法来获取将某些特定数据附加到数组的列表(作为第一个和第二个参数)
希望这很有帮助!