遍历包含另一个列表的列表,包含另一个列表的等

雷克斯

所以我有一个已定义的特定类的列表,假设IList<Element> A;Element类具有IList<Children> b;

B列表从文件获取数据。B可以具有包含包含列表等的列表的列表。“递归”或B可以只有一个列表,即B嵌套列表可以不同

我想遍历所有清单。有没有办法做到这一点?

马克·格雷韦尔

幼稚的做法是简单地堆递归-这是许多常见方案罚款:

class A {
    List<B> _theList;
    void DoTheThing() {
       foreach(var b in _theList) b.DoTheThing();
    }
}
class B {
    List<B> _innerItems;
    void DoTheThing() {
        DoTheThingAtThisLevel();
        // and now recurse
        foreach(var inner in _innerItems) inner.DoTheThing();
    }
}

对于非常深的列表,可能是一个问题-由于堆栈可能变得太大;在这种情况下,使用本地队列或堆栈并将用于逻辑状态可以避免以下情况:

class A {
    List<B> _theList;
    void DoTheThing() {
       var queue = new Queue<B>();
       foreach (var b in _theList)
           queue.Enqueue(b);
       while (queue.Count != 0)
       {
           var b = queue.Dequeue();
           b.ProcessThisLevelOnly();
           // now we do the logical recursion here
           foreach (var inner in b.Items)
               queue.Enqueue(inner);
       }
    }
}

您可以根据深度优先或宽度优先使用堆栈与队列。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检查列表中包含的另一个至少一个 - 枚举

使用包含另一个列表的对象清理列表

如何测试一个列表是否包含另一个列表?

检查一个列表是否包含另一个列表中的元素

一个列表至少包含另一个列表中的一个值(Java 8)

LINQ选择列表,其中子列表包含另一个列表中的项目

如何确定一个列表是否包含另一个列表?

如何检查一个列表是否包含另一个列表C#

将元素保留在另一个列表中包含的元组列表中

返回不包含另一个列表的唯一列表

如何遍历包含一个字典的字典,该字典包含另一个包含列表的字典

检查一个列表项是否包含在另一个列表中

您如何使用另一个包含列表的列表订购包含列表的列表?

如何检查一个列表是否包含另一个列表子列表中的项目?

列表包含另一个顺序相同的列表

LINQ通过另一个值获取包含在另一个列表中的对象的结果

检查一个列表是否包含另一个列表的一个或多个值

检查列表列表中的元素是否包含另一个列表

包含另一个列表的列表

一个列表包含另一个重复的列表

Postgres(或ActiveRecord)-一个列表完全包含在另一个列表中

测试一个列表是否包含在另一个列表中

检查一个列表是否包含另一个列表的元素

将“ LoadfromCollection”与包含另一个列表的列表一起使用

检查一个列表是否包含另一个列表中包含的字符串

如何检查列表列表是否包含另一个列表

获取包含另一个列表的项目列表

如何使用包含另一个列表的列表的列表执行 for 循环?

如何检查列表列表是否包含来自另一个列表的任何元素