Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 在SplayTreeSet上反向迭代_Dart - Fatal编程技术网

Dart 在SplayTreeSet上反向迭代

Dart 在SplayTreeSet上反向迭代,dart,Dart,根据Set文档: LinkedHashSet按其元素的插入顺序进行迭代,并且 像SplayTreeSet这样的排序集迭代排序中的元素 秩序 因此,如果您想要设置功能并控制迭代顺序,SplayTreeSet是正确的选择 但是,如何才能有效地以相反的顺序对集合进行迭代(如STLreverse\u iterator)? 在某些情况下,我想向前走,而在其他情况下,我想反向走。现在splay.toList()。反向的似乎就是这样做的。您也许可以在SplayTreeSet上添加reversed属性,但没有退

根据
Set
文档:

LinkedHashSet按其元素的插入顺序进行迭代,并且 像SplayTreeSet这样的排序集迭代排序中的元素 秩序

因此,如果您想要设置功能并控制迭代顺序,
SplayTreeSet
是正确的选择

但是,如何才能有效地以相反的顺序对集合进行迭代(如STL
reverse\u iterator
)?
在某些情况下,我想向前走,而在其他情况下,我想反向走。

现在
splay.toList()。反向的
似乎就是这样做的。您也许可以在
SplayTreeSet

上添加
reversed
属性,但没有退步的方法

在SplayTreeSet上使用
反转
会有某种意义。它将基于同一棵树,但只需交换first/last和迭代顺序的含义


通常使用反向的
比较器创建集合就足够了,但是如果您想在同一张地图上同时进行,或者在创建集合之前不知道方向,则没有简单的解决方案

“或者没有简单的解决方案”——这是否意味着考虑到它的实现方式?是-在这种情况下,我希望在一个集合中包含相同的数据,在某些情况下,我将向前迭代,而在其他情况下,我将反向迭代。也许有更好的方法,但假设你有一个分类的账户集合来资助活动和投资。它们的分类是这样的:在融资时,你应该从末端选择账户出售不受欢迎的资产,但在投资时,你应该根据分类标准从前端投资购买最受欢迎的资产。当余额降至0时,set功能有助于删除帐户或添加帐户以进行反向。我可以看到反向迭代的有用性。有两种方法可以做到这一点:要么将迭代器设置为双向迭代器(这很少见,而且通常没有那么有用),要么将集合设置为一个反向视图,要么将其设置为一个Iterable(因此仅向后迭代),要么将其设置为一个可以用作任何其他集合的集合,仅由原始集合支持。没有任何东西会从本质上阻止这两种解决方案,这“只是”实现它的问题。