所以我有一个像这样的空列表
List<Node> nodes = null;
然后我想在其中添加“节点”
try {
File file = new File("test.txt");
Scanner scanner = new Scanner(file);
while (true){
String first= scanner.next();
if (first.equals("-1")){
break;
}
Node node1= new Node(first, first);
if (nodes==null){
nodes.add(node1);
}
if (nodes!=null){
if(nodes.contains(node1)){
nodes.add(node1);
}
}
很明显,在空列表中执行 .contains 会给我一个异常错误,但为什么要执行
if (nodes==null){
nodes.add(node1);
}
还给我一个空指针错误? 似乎空列表是不可变的。我怎样才能保留一个 List 结构并仍然从空构建它?
最佳答案
List<Node> nodes = null;
这不是一个空列表,这是一个初始化为空的列表引用。你更想要:
List<Node> nodes = new LinkedList<Node>();
或类似的。这会为您提供一个空列表。
编辑:问题改变后,这个逻辑完全困惑了:
Node node1= new Node(first, first);
if (nodes==null){
nodes.add(node1);
}
if (nodes!=null){
if(nodes.contains(node1)){
nodes.add(node1);
}
}
你在这里说的是,如果 nodes == null(现在不是),则尝试将节点添加到列表中。如果它不为空,并且 node1 已经在列表中(它不在),则将其添加到列表中。您可以将上面的行替换为:
if (!nodes.contains(node1)) {
nodes.add(node1);
}
表示如果列表中不存在该节点,请添加它。
关于java - 添加到空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8325507/