为什么我们在Lists类中有TwoPlusArrayList和OnePlusArrayList?

问题描述 投票:0回答:1

我只是对Google番石榴的Lists类实现感到好奇,我们有两种方法可以从Array创建List,

Lists.asList(E first, E[] rest)
Lists.asList(E first, E second, E[] rest)

为什么这些方法首先要分别休息?不能像Java的Arrays.asList实现吗?

我唯一能看到的是第一和第二个是可为空的,其余的不是可为空的

任何人都可以帮助您理解吗?

java guava
1个回答
0
投票

好,所以Lists.asList()的工作不仅仅是将数组转换为列表。

假设我们有一个数组,并且我们想向其中插入一个元素,因为数组大小是固定的,所以我们不能这样做。解决此问题的一种方法是分配一个新数组,该数组的大小为原始数组的+1,并将所有元素从原始数组复制到新数组。这有效,但是效率很低。

[Guava提供了有效的解决方案-Guava的Lists.asList()方法返回了一个不可修改的列表,该列表由原始数组支持,该数组还包含指定的元素。

来源:https://www.techiedelight.com/guava-lists-class-java/

因此,基本上,您可以通过将第一个和/或第二个参数(取决于所使用的方法)设置为空,并将“ rest”参数设置为数组来使用它来转换数组。

这将返回您的数组作为列表。 (这可能是您在做什么)。

但是,如果您愿意,可以使用相同的方法来获取将某些特定数据附加到数组的列表(作为第一个和第二个参数)

希望这很有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.