Java 何时排列列表

Java 何时排列列表,java,arraylist,Java,Arraylist,这是一个非常初级的问题,但希望是一个中肯的问题 我一直试图通过编写一个蹩脚的小流氓代码来自学Java。 自从我发现collections框架以来,我发现我在任何地方都在使用ArrayList——事实上,我发现自己担心在常规数组就足够的地方使用ArrayList会导致效率低下 因此,我的问题是:在什么情况下,我应该使用arrayList而不是常规数组(反之亦然),为什么?是否有一些简单的经验法则可以帮助我选择在任何给定任务中应该使用哪种方法 我反驳这种重复——我的问题是,在哪种情况下,一种方法比另

这是一个非常初级的问题,但希望是一个中肯的问题

我一直试图通过编写一个蹩脚的小流氓代码来自学Java。 自从我发现collections框架以来,我发现我在任何地方都在使用ArrayList——事实上,我发现自己担心在常规数组就足够的地方使用ArrayList会导致效率低下

因此,我的问题是:在什么情况下,我应该使用arrayList而不是常规数组(反之亦然),为什么?是否有一些简单的经验法则可以帮助我选择在任何给定任务中应该使用哪种方法


我反驳这种重复——我的问题是,在哪种情况下,一种方法比另一种更合理,而不是哪种方法对于任何给定的任务通常更快。

如果您知道您的集合始终是固定长度的,那么请使用数组

如果您的集合长度可变,即它可以容纳1,5100个值,则使用arraylist

例如

一个向用户提出一系列问题的应用程序,用户可以尝试多次获得正确答案

你为一个问题创建了一个可能的答案数组,你知道每个问题只有5个可能的答案,你可以使用一个长度为5的数组来存储可能的答案

您决定创建一个包含用户提交的所有答案的数组,他们可以提交任意数量的答案,您可以将这些答案存储在一个数组列表中,因为用户可以在正确回答问题之前给出1或100个答案,而固定长度的数组无法完成此任务

希望这有助于

在有效的Java中,人们应该更喜欢列表而不是数组。 其中一个主要的区别是数组是不可更改的,因此需要精确的处理。而且,它们的类型是具体化的,并且不能与泛型很好地混合


但这意味着数组能够处理原语,而泛型集合不能:它们内部有
Object
s。因此,您可能更喜欢避免代码中性能关键部分的数组。

以前有人问过这一问题:当您知道列表的大小并且不需要增加大小时,请使用数组,否则请使用数组列表。如果
集合的大小将发生变化,请使用
arraylist
数组