Java LinkedList添加数据后显示为空的问题求助
排查LinkedList添加元素后为空的问题
嘿,我来帮你搞定这个头疼的问题!你明明调用了addNode方法添加数据,结果打印链表却显示为空,大概率是以下几个常见问题导致的,咱们逐个排查:
1. 最容易踩坑:操作了不同的workPls实例
这是最常见的原因!比如你可能在调用代码里写了类似这样的逻辑:
// 创建第一个实例,往里面加元素 workPls addObj = new workPls(); addObj.addNode(new PlsWork("测试数据")); // 但打印的时候用了另一个全新的实例 workPls printObj = new workPls(); printObj.print(); // 这里的链表当然是空的!
每个workPls对象都自带一个独立的LinkedList,添加到addObj里的元素不会跑到printObj的链表中。解决方法很简单:确保添加元素和打印时使用的是同一个workPls对象。
2. 看起来空但实际有数据:PlsWork没重写toString()
如果你的print方法里,List.size()输出的是大于0的数字,但打印List的时候显示的是[linked.PlsWork@xxxxxxx]或者类似“空”的格式,那其实链表是有数据的,只是Java默认的toString()方法只会打印类名+哈希码,看起来像空的而已。
你只需要在PlsWork类里重写toString()方法,就能显示实际内容了:
public class PlsWork { // 假设你的PlsWork有这些成员变量 private String content; private int id; // 构造方法、getter/setter... @Override public String toString() { return "PlsWork{id=" + id + ", content='" + content + "'}"; } }
这样再打印链表,就能看到清晰的元素内容了。
3. 包访问权限的潜在问题
你的workPls类没有声明包,而调用它的类在linked包下,虽然Java支持默认包,但在一些IDE或者项目结构里,跨包访问默认包的类可能会出现加载异常,导致你以为添加了元素但实际没生效。建议给workPls加上和调用类一致的包声明:
package linked; import java.util.LinkedList; public class workPls { // 你的原有代码... }
最后建议
如果上面的排查都没解决问题,把你调用addNode和print的代码片段贴出来,咱们可以更精准地定位问题~
内容的提问来源于stack exchange,提问作者theo
相关产品推荐
相关产品推荐

