You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中使用自定义类操作LinkedList的元素数据异常问题

问题分析与解决

核心问题

你当前的代码只创建了一个editTextString对象,三次调用list.add(data)只是把同一个对象的引用重复塞进列表里。如果后续你清空了这个data对象的属性,列表里所有元素(因为指向同一个对象)都会变成空值——这就是你看到“后两个元素为空”的原因。要得到三个独立的元素,必须每次添加时都创建新的对象实例。

修正后的代码

// 遵循Java命名规范,类名改用大驼峰格式
public class EditTextString {
    private String str1;
    private String str2;
    private String str3;

    public EditTextString(String data1, String data2, String data3) {
        str1 = data1;
        str2 = data2;
        str3 = data3;
    }

    // 重写toString方法,方便调试时直接查看对象内容
    @Override
    public String toString() {
        return "EditTextString{" +
                "str1='" + str1 + '\'' +
                ", str2='" + str2 + '\'' +
                ", str3='" + str3 + '\'' +
                '}';
    }

    public static void main(String[] args) {
        ArrayList<EditTextString> list = new ArrayList<>();
        // 每次添加都新建对象,而非复用同一个引用
        list.add(new EditTextString("edit1", "edit2", "edit3"));
        list.add(new EditTextString("edit4", "edit5", "edit6"));
        list.add(new EditTextString("edit7", "edit8", "edit9"));

        // 遍历打印验证结果
        for (EditTextString item : list) {
            System.out.println(item);
        }
    }
}

关键要点

  • 集合存储的是对象引用:Java集合里存储的是对象的引用而非对象本身,重复添加同一个引用,所有列表元素都会指向同一个对象,修改这个对象的属性会同步影响所有元素。
  • Java命名规范:类名必须使用大驼峰格式(首字母大写),这是行业通用标准,能避免代码混乱。
  • 调试便捷技巧:重写toString方法,无需手动遍历对象属性,直接打印就能看到对象内部数据,提升调试效率。

内容的提问来源于stack exchange,提问作者user22137551

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 22:07:44