Java 添加到空列表
所以我有一个这样的空列表Java 添加到空列表,java,list,Java,List,所以我有一个这样的空列表 List<Node> nodes = null; 显然,在空列表中执行.contains会给我一个异常错误,但为什么这样做呢 if (nodes==null){ nodes.add(node1); } 也给我一个空指针错误? 空列表似乎是不可变的。我如何仍然保持列表结构,并且仍然从空开始构建它 您必须为列表分配内存:nodes=newarraylist()在添加节点之前。您试图将节点添加到空列表中,即将节点添加到空列表中 List<
List<Node> nodes = null;
显然,在空列表中执行.contains会给我一个异常错误,但为什么这样做呢
if (nodes==null){
nodes.add(node1);
}
也给我一个空指针错误?
空列表似乎是不可变的。我如何仍然保持列表结构,并且仍然从空开始构建它 您必须为列表分配内存:
nodes=newarraylist()代码>在添加节点之前。您试图将节点添加到空列表中,即将节点添加到空列表中
List<Node> nodes = null;
这里要说的是,如果nodes==null(现在不是),则尝试将该节点添加到列表中。如果它不为null,并且node1已经在列表中(它不是),则将其添加到列表中。您可以将上面的行替换为:
if (!nodes.contains(node1)) {
nodes.add(node1);
}
这表示如果列表中不存在节点,请添加它。您需要首先初始化列表
nodes = new ArrayList<Node>();
nodes=newarraylist();
例如:
if (nodes==null){
nodes = new ArrayList<Node>();
nodes.add(node1);
}
if(节点==null){
节点=新的ArrayList();
nodes.add(node1);
}
但最好是有一个空列表,而不是一个未初始化(null)的列表
因此,不是:List nodes=null代码>拥有列表节点=新建ArrayList()
然后您可以删除完整的if
并始终使用节点。添加(node1)代码>,无论它是第一个还是第二个元素。nodes=new ArrayList();
nodes = new ArrayList<Node>();
将其初始化为新对象(空)应该会有所帮助。如果节点为null
,则无法对其执行任何操作。将其初始化为新建ArrayList()
。这现在是一个空列表 这是一个确定的空指针异常,因为节点
为空
你是说
if (nodes!=null){
nodes.add(node1);
}
还要初始化列表
nodes = new ArrayList()
这是因为您尚未实例化对象“节点”
添加以下行,它应该可以工作:
if (nodes==null){
nodes = new ArrayList<Node>();
nodes.add(node1);
}
if(节点==null){
节点=新的ArrayList();
nodes.add(node1);
}
还要注意,不能实例化列表对象。因此,您可以使用类似于ArrayList/LinkedList等的内容。您的节点
是空的
,因此这就是所说的错误。。。这是获取空指针异常时最常见的编程错误。最好在eclipse中使用插件;它不允许你制造这种错误。您也可以更容易地检测问题。您不能实例化列表
接口:)哎呀,应该是ArrayList
或类似的。我将编辑我的答案。谢谢。我刚才犯了同样的错误,你不能实例化列表
,它必须是数组列表
或链接列表
等等,当然!谢谢你指出这一点。我想仍然是C模式:)哈哈,不用担心。我得到一条评论,告诉我我的答案也是一样的。我是C++模式的。
if (nodes!=null){
nodes.add(node1);
}
nodes = new ArrayList()
if (nodes==null){
nodes = new ArrayList<Node>();
nodes.add(node1);
}