leafiterator.java

来自「本书透彻讲解了经典的《设计模式:可复用面向对象软件的基础》一书涵盖的23种基本设」· Java 代码 · 共 79 行

JAVA
79
字号
package com.oozinoz.util;

import java.util.*;

/*
 * Copyright (c) 2001 Steven J. Metsker.
 * 
 * Steve Metsker makes no representations or warranties about
 * the fitness of this software for any particular purpose, 
 * including the implied warranty of merchantability.
 *
 * Please use this software as you wish with the sole
 * restriction that you may not claim that you wrote it.
 */
/**
 * Iterate over a leaf, returning it just once.
 *
 * @author Steven J. Metsker
 *
 */
public class LeafIterator extends ComponentIterator 
{





/**
 * Create an iterator over a childless node in a composite.
 *
 * @param node the childless node
 * @param visited a set to track visited nodes
 */
public LeafIterator(Object node, Set visited)
{
	super(node, visited);
}

/**
 * Return zero, as the depth of iterators below a leaf is
 * always zero.
 *
 * @return zero, as the depth of iterators below a leaf is
 *         always zero
 */
public int depth()
{
	return 0;
}

/**
 * Return true if we haven't actually returned our node
 * yet.
 *
 * @return true if we haven't actually returned our 
 *         node yet.
 */
public boolean hasNext()
{
	return !visited.contains(node);
}

/**
 * Return this node if we haven't returned it previously;
 * otherwise return null.
 *
 * @return this node if we haven't returned it previously;
 *         otherwise return null.
 */
public Object next()
{
	if (visited.contains(node))
	{
		return null;
	}
	visited.add(node);
	return node;
}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?