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
相关产品推荐
相关产品推荐

