![]() |
1
1
这是我能做的最好的事情,以尽可能减少函数的分配时间(应该只在超过容量时进行分配,这应该不超过在结果中创建最大子列表所需的时间)。我已经测试了这个实现,它的工作方式和您描述的一样。 请注意,当访问组中的下一个列表时,前一个子列表的结果将被销毁。
编辑 这是另一个版本,它根本不使用另一个列表(不应该进行任何分配)。不知道这会有多好的比较,但它确实按要求工作(我也不知道如果您尝试缓存子“数组”,这个会如何)。 另外,这两个都需要一个“using system.collections”语句(除了泛型命名空间之外)。
|
![]() |
2
4
我唯一的建议是
编辑 : 在进一步的检查中,你的施法次数超过了必要的次数。
替换
而且,你可以把你的
最后,如果您可以将返回类型更改为
顺便说一下,您的变量名很混乱;您应该交换
|
![]() |
3
3
类型测试和类型转换可能是性能杀手。如果可能的话,令牌类型应该实现一个公共接口或抽象类。而不是进来
以下是一些概念代码,您可以使用它们开始:
原则上,您可以创建
|
![]() |
4
3
A:如果您只是在嵌套foreach中迭代结果,那么全延迟实现就足够了:
像这样使用:
B:如果您需要在一段时间后处理结果,并且您希望处理得不正常,或者您在一个线程上进行分区,然后可能将这些段分派给多个线程,那么这可能会提供一个很好的起点:
C:如果您真的必须返回一个list<t>-s的集合,我对此表示怀疑,除非您稍后明确希望对其进行变异,否则请在复制之前尝试将其初始化为给定的容量:
D:如果这还不够,我建议您滚动自己的轻量级列表实现,该实现可以从另一个实例将范围直接复制到其内部数组。 |
![]() |
5
2
我的第一个想法是不要抬头
|
![]() |
6
1
我认为在这些场景中,假设列表项是小写字母,并且具有匹配标记类型的项是t:
这将导致:
直接重构:
要修复损坏的案例(假设这些案例确实已损坏),我建议:
这将导致:
|
![]() |
7
1
使用linq你可以试试这个:(我没有测试它…)
第二次尝试:
|
![]() |
8
1
有一种可能性 令牌类(可能是任何类)
现在是类型枚举(这可能是任何其他分组因素)
扩展方法(不管您选择什么都声明这个)
使用示例(我使用了一个web项目来旋转这个)
所以我所要做的就是使用linq,可以随意添加或删除,你可以在这个上疯狂,在许多不同的属性上分组。 |
![]() |
9
0
是否需要将其转换为数组?您可以使用linq和延迟执行来返回结果。
编辑:
我建议将此选项与其他选项进行性能测试,以查看如果尝试此方法,您的场景是否有性能提升。它可能会导致管理迭代器的更多开销,这对于数据很少的情况是不利的。 我希望这能有帮助。
警告:这将编译,但仍可能有隐藏的错误。这里越来越晚了。
|
![]() |
Dave · 如何在for循环中修改列表值 4 月前 |
![]() |
matteo panaro · 向列表中添加项目 5 月前 |
![]() |
Bioinfotec · 如何在R中将两个嵌套列表合并为一个列表? 5 月前 |
![]() |
Pernoctador · Python映射可以复制吗?我需要参考地图 6 月前 |
![]() |
Bogaso · 从列表中返回与模式匹配的元素 6 月前 |
![]() |
Tom Hunter · Excel验证列表中的条目 6 月前 |
![]() |
Estrobelai · Python:数组中价格高于平均值的所有项目 10 月前 |