首页 > 解决方案 > 如果将 HashMap 转换为数组,为什么将数组初始化为 >0 将不起作用

问题描述

我很困惑为什么如果使用 HashMap.values.toArray 但不使用大于 0 的情况下使用 0 初始化数组有效。

private class Node{
private char value;
private HashMap<Character, Node> children = new HashMap<>();

private void addChild(char ch) {
            children.put(ch, new Node(ch));
        }


private Node[] getChildren() {
            return children.values().toArray(new Node[0]);
        }
}

private Node root = new Node(' ');

public void insert(String word){
var current = root;
for ( var ch : word.toCharArray()){
if (!current.containsKey(ch))
    current.addChild(ch);
current = current.get(ch);
}
}

public void print(){
print(root);
}

private void print(Node root){
for (var child : root.getChildren())
 System.out.println(child.value);
}

如果我将其设置为初始化数组的大小 > 零,例如 new Node[1] ,这将不起作用;

标签: javaarrayshashmap

解决方案


推荐阅读