使用Java中的对象列表迭代对象的最佳方法

时间:2017-08-23 13:27:23

标签: java recursion

我正在使用Java来尝试递归迭代一个对象。为了简化我的示例,让我们说这个类叫做Simple,它包含一个ID和一个可以包含0-n个其他Simple对象的列表,而那些Simple对象有一个可以包含在0-n之间的列表其他简单对象等

我想要做的是传递一个Simple和一个ID,让我的方法返回与该ID匹配的Simple。以下是我写的方法:

public static Simple getSimpleById(Simple simple, int id) {
    if (simple.getId() == id) {
        return simple;
    } else {
        for (Simple s : simple.getSimpleList()) {
            return getSimpleById(s, id);
        }
    }
    return null; // no match found
}

问题在于递归方法调用 - 使用return语句,我的方法在遇到具有空列表的Simple时立即退出。如果没有return语句,当找到匹配项时,Simple将返回给调用者,并且该方法只是继续迭代。

我能完成递归所需的工作吗?还是我咆哮错误的树?我认为这是导致问题的列表,有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

将其更改为

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template match="/values"> 
    <Results>
        <xsl:for-each select="value">
            <xsl:variable name="a" select="substring-before(substring-after(., ';'), ';')" />
            <xsl:variable name="b" select="substring-after(substring-after(., ';'), ';')" />
            <Result>
                <xsl:value-of select="translate($a, '+', '') + translate($b, '+', '')" />
            </Result>
        </xsl:for-each>
    </Results>
</xsl:template>

</xsl:stylesheet>