java - 添加到空列表

标签 java list

所以我有一个像这样的空列表

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/

相关文章:

java - 如何获取项目点击通知

java - 如何确保从子类中的方法在抽象父类(super class)中调用某些方法 (Java)

python - 将时间列表转换为总时间

c# - 用默认值填充 List<int>?

C# 任意嵌套列表

Java - DateTimeFormatter - ParseException

java - 如何将嵌套 JSON 映射到简单对象?

java - OverridePendingTransition 工作异常

java - 自定义 ArrayList 搜索问题?

python - 了解使用嵌套循环创建二维列表