Java 为什么创建一个类的所有对象的ArrayList作为类变量是不好的?

Java 为什么创建一个类的所有对象的ArrayList作为类变量是不好的?,java,arraylist,Java,Arraylist,因此,我唯一想知道为什么会出现这种情况的原因是,所创建的类的每个对象都带有一个相同的数组列表,所以这是对内存的不好使用?我同意你的推理。如果一个类只有几个实例,这并不坏,但随着创建的实例越来越多,arrayList元素的总量将以指数级增长。另外,向arrayList添加更多元素的成本非常高(因为实现需要创建一个包含更多元素的全新数组)。想象一下,在100个ArrayList中再添加1个元素,每个元素100个,会有多慢。这是非常低效的,我宁愿将一个特定类的所有实例的arrayList作为类外的变量

因此,我唯一想知道为什么会出现这种情况的原因是,所创建的类的每个对象都带有一个相同的数组列表,所以这是对内存的不好使用?

我同意你的推理。如果一个类只有几个实例,这并不坏,但随着创建的实例越来越多,arrayList元素的总量将以指数级增长。另外,向arrayList添加更多元素的成本非常高(因为实现需要创建一个包含更多元素的全新数组)。想象一下,在100个ArrayList中再添加1个元素,每个元素100个,会有多慢。这是非常低效的,我宁愿将一个特定类的所有实例的arrayList作为类外的变量,并将arrayList作为参数传入。

它是什么意思“一个类的所有对象”?你能举个例子吗?另外,静态字段只占用内存一次——它们对于类的每个对象都不重复。因此,列表只有一个副本。@FrançoisLEPORCQ因此,如果我有一个类Dog,并用它来创建单个Dog对象。抱歉,我回家后会尝试发布一个示例。您想将此对象列表保留在内存中吗?你可以用列表上的静态修饰符来做,对我来说绝对是一个不错的做法。