Java:用ArrayList写pojo最高效的方法

标签 java memory-management arraylist reference pass-by-reference

在时间和内存消耗方面,编写包含 ArrayList 的简单 pojo 类的最正确和/或最有效的方法是什么? (关于引用的 java 机制,通过 ref' 传递,赋值等):

public class MyClass {

    //1. Do we need to initialize here?
    public List<String> mList = new ArrayList<>();

    //2. Do we need to declare D. Constructor?
    public MyClass() {}

    //3. Need to initialize the list here or just pass?
    public MyClass(List<String> list) {
        this.mList = list;
    }

    //4. Better way for copy/assignment?
    public void setMlist(List<String> list) {
        this.mList = list;
    }

    public List<String> getMList() {
        return this.mList;
    }

}

最佳答案

  1. Do we need to initialize here?

不,只有在你需要的时候才初始化它。如果有可能在未初始化的情况下使用它,请务必检查 null。

  1. Do we need to declare D. Constructor?

如果你什么都不做,我真的不明白拥有它的意义。请注意,有些人更喜欢仍然声明它在其中写评论并指示它不应该做任何事情:

public MyClass(){
    //NOP
}

参见 NOP .这不会改变与内存使用相关的任何内容。但是从逻辑上讲,默认构造函数应该初始化列表而不是在开始时初始化它。所以我们有两个选择,我们传递一个已经存在的(使用参数化构造函数)或者我们使用默认构造函数并创建一个空列表。

  1. Need to initialize the list here or just pass?

只是通过,否则接收它作为参数有什么意义?如果您对其进行初始化并重新分配,那将毫无意义。您可能需要检查接收到的是否为空,否则对其进行初始化。

  1. Better way for copy/assignment?

如果你真的想制作副本,你可能需要检查Collections#copy .然而,这不是 setter 的重点,你在这里所做的是正确的。

关于Java:用ArrayList写pojo最高效的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32525124/

相关文章:

java - 如何在Tomcat中以固定路径部署.war文件?

java - 如果查找键是字符串,则 EnumMap 或 HashMap

ios - 释放与导航 Controller 关联的 View Controller

java - arraylist 的保存和读取类

android - 从 ArrayList 中删除项目,ArrayIndexOutOfBounds 异常

java - 如何在java webstart项目中包含jar依赖项

java - Selenium:更改实例或连接两个实例

iphone - 数据格式化程序暂时不可用,将在 'continue' 后重试

mongodb - mongo 不遵守 Docker 内存限制

java - 我想在java中创建一个MenuBased ArrayList