java 一个值为null的vector对象执行.size()操作时报NullPointerException

当尝试对一个值为null的Vector对象调用.size()方法时,程序抛出NullPointerException。问题可能源于未初始化或已清空的集合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码片段如下:

class Node{
    public int val;
    public List<Node> children;

    public int getVal() {
		return val;
	}

	public void setVal(int val) {
		this.val = val;
	}

	public List<Node> getChildren() {
		return this.children;
	}

	public void setChildren(List<Node> children) {
		this.children = children;
	}

	public Node() {}

    public Node(int val,List<Node> children) {
        this.val = val;
        this.children = children;
    }
    
}

class Tree{
	Node rootNode;
	Node[] nodes=new Node[10];	
	List<Node> tempChildren=new Vector<Node>();
	List<Node> Children1=new Vector<Node>();
	List<Node> Children2=new Vector<Node>();
	List<Node> Children3=new Vector<Node>();
	List<Node> Children4=new Vector<Node>();
	Queue<Node> childrenQue=new LinkedList<Node>();
	
	public Tree() {
		// TODO Auto-generated constructor stub
		//先给每个节点赋值
		for (int i = 0; i < nodes.length; i++) {
			nodes[i]=new Node(i+1, null);
		}
		
		//建立节点之间的父子关系
		Children1.add(nodes[8]);		
		Children1.add(nodes[1]);
		Children1.add(nodes[3]);		
		nodes[2].setChildren(Children1);
		//System.out.println(nodes[2].children.get(2).val);
		
		Children2.add(nodes[5]);
		nodes[4].setChildren(Children2);
		
		Children3.add(nodes[7]);
		Children3.add(nodes[9]);
		nodes[6].setChildren(Children3);

		Children4.add(nodes[2]);
		Children4.add(nodes[4]);
		Children4.add(nodes[6]);
		nodes[0].setChildren(Children4);
		
		rootNode=nodes[0];
		//System.out.println(nodes[2].children.size());

	}
	
	//node为待搜索的树的根节点,val为待搜索的节点的值
    public boolean BFS(Node node,int val) {
		if (node==null) {
			return false;
		}		
		System.out.print("遍历路径:");
		if (node.getVal()==val) {
			return true;
		}
		
		childrenQue.offer(node);
/*		for (int i = 0; i < tempChildren.size(); i++) {
			childrenQue.offer(tempChildren.get(i));
		}*/
		
		while (!childrenQue.isEmpty()) {
			///System.out.println("hello");
			Node headNode=childrenQue.poll();
			System.out.print(headNode.getVal()+" ");
			if (headNode.getVal()==val) {
				System.out.println(" 这棵树包含待寻找的节点");
				return true;
			}
			tempChildren=headNode.getChildren();
			if (tempChildren!=null) {
				for (int i = 0; i < tempChildren.size(); i++) {
					childrenQue.offer(tempChildren.get(i));
				}
			}
/*			for (int i = 0; i < tempChildren.size(); i++) {
				System.out.println("该节点孩子节点的个数为:"+tempChildren.size()+" 第"+(i+1)+
						"个节点的值为:"+tempChildren.get(i).val);
				childrenQue.offer(tempChildren.get(i));
			}*/
		}
		System.out.println("这棵树不包含待寻找的节点");
		return false;
	}
    
}

上面代码中注释掉的for循环会报NullPointerException,猜测应该是java的集合为null时不能执行集合对应的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值