问题标签 [generic-collections]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何从列表中删除高效(C#)?
如果我理解正确(如果我错了请纠正我),列表是由 .NET 中的数组实现的,这意味着每次删除列表中的项目都会导致重新分配所有列表(这反过来意味着O(n)
)。
我正在开发一个游戏,在游戏中,我有很多子弹在任何给定的时刻都在空中飞行,比如说 100 颗子弹,每一帧我将它们移动几个像素并检查与游戏中物体的碰撞,我需要移除从列表中每个碰撞的子弹。
所以我将碰撞的子弹收集在另一个临时列表中,然后执行以下操作:
因为循环是O(n)
,而删除是O(n)
,我花O(n^2
了 ) 时间来删除。
有没有更好的方法来删除它,或者更适合使用的集合?
c# - 限制通用集合的大小?
有没有办法限制通用集合的大小?
我有一个 WriteableBitmap 堆栈,用于在每次更改时存储一个 WriteableBitmap 的克隆,这意味着我可以通过简单地将最新的 WriteableBitmap 从堆栈中弹出来轻松撤消。
问题是内存使用情况,我想限制这个堆栈容纳 10 个对象,但我看不到允许我轻松执行此操作的属性。有没有办法,或者我是否必须在每次更改时检查堆栈大小,并在我达到 10 时将最后 10 个对象复制到一个新堆栈中,以及每次后续更改时?我知道该怎么做,但希望有更简单的方法,是吗?
c# - 为什么 Collections.Generic.Queue 没有 Synchronized 方法但 Collections.Queue 有?
System.Collections.Queue
类具有Queue.Synchronized
返回线程安全队列实现的方法。
但是通用的,System.Collections.Generic.Queue
没有Synchronized
方法。在这一点上,我有两个问题:
- 为什么通用的没有这种方法?这是一个框架 API 设计决策吗?
- 返回的队列
Queue.Synchronized
与类有何不同ConcurrentQueue<T>
?
谢谢。
ajax - AutoMapper UseValue、ResolveUsing 或 MapFrom 重用来自先前调用的值。是缓存还是什么?
我有一种情况,从第二次调用和后续调用(Ajax GET 调用)开始,AutoMapper
正在重用以前的值(第一次调用的值来自于操作链接中的点击)。这就像一个“缓存”问题......
我使用UseValue
,ResolveUsing
还是MapFrom
在上面的opt =>
lambda 中都没有关系。行为是相同的,也就是说,它重用了先前调用的值。
AssessmentId
Element
源类型 ( )中不存在属性。这样,我尝试分配AssessmentId
一个在随后调用我拥有此代码的方法期间“可能”动态更改的值。assessmentId
是我的 ASP.NET MVC 操作方法中的一个参数,如上面方法签名中所示。
List
然后我在action 方法中调用这段代码:
第一次,没问题questions
,也就是说,所有AssessmentQuestionViewModel
对象都AssessmentId
按照定义正确设置了属性CreateMap
。
从第 2 次调用开始,它重用了第 1 次assessmentId
调用中的第一次调用,它搞乱了我的业务逻辑,因为我希望它映射AssessmentId
到assessmentId
作为参数传递给List
方法的更新。
只是为了确定:我在代码中设置了一个断点,我可以看到assessmentId
参数的值是正确的。只是返回的映射对象questions
在属性中有错误的值AssessmentId
- 一个与当前值不同的assessmentId
值。据我了解,这些值应该相等,因为我要求 AutoMapper 使用该当前值进行映射。
我有 AutoMapper 2.2.1-ci9000(预发行版),但我用以前的版本对此进行了测试,我看到了同样的行为。我更新了售前赛,认为这种“不当行为”会消失。
我认为这是一个错误。如果我错了或者我试图以不受支持的方式使用它,请纠正我。:)
java - 无法检索 Map(HashMap) 的所有键?
我正在开发一个客户端-服务器应用程序,其中服务器发送指示,客户端接收这些指示。地图被声明为
地图正在通过synchronised(obj)
值类的构造函数获取值
我正在尝试检索此地图的所有键。我使用过 Set<key> t=Map.KeySet();
,但这会引发编译错误,提示在接口中找不到符号:KeySet()java.util.Map.
注意:键是接口,值是声明 Map 的类。
java - Java - 为继承特定接口的所有类添加功能
很抱歉,我无法更深入或更抽象地描述我的问题。我觉得解释我的问题的最好方法是通过这个非常具体的例子。
我想定义一个函数“readCollection”,它会解析一个字符串,并根据我调用函数的方式给我一个特定类型的特定集合。
例如,我想这样使用它:
或者
当然,我已经为每个类定义了一个接口,该接口具有用于读取一个实例(“Bar..”)的“读取”方法。
我陷入了两个问题之间:
- 自然函数 readCollection 应该是静态函数,但接口不能有静态方法。
- 方法 readCollection 应该返回 Foo 或 Bar 等类型的新对象,但我“无法实例化该类型”,这通常在我定义 readCollection 的类中定义。
- 假设该方法不是静态定义的,我不能在不引用该类型的特定对象的情况下调用它,由于前一点我不能这样做。
如何编写我的方法而不为每个 Foo 和 Bar 等复制它?
我似乎自己找到了解决方案,但它非常丑陋和讨厌。
我现在有
和
和
在这里,我发送了一个 ArrayList 的新实例,以将结果返回给 Bar,以便引用方法“读取”。我看不出我怎么能避免这种情况。
请告诉我有更好的方法。在某个地方,我希望我事后感到非常愚蠢。
c# - 多键数据结构
我正在寻找一种可以使用多个键进行搜索的数据结构。用一个例子更容易解释:
像这样的事情是否可能,如果是这样,是否有任何已经存在的东西可以做到这一点?您将如何实现将所有内容都视为键并通过搜索其中任何一个来返回所有关联键的东西?
理想情况下,您还可以使用任意数量和/或类型的参数:
c# - 在 C# 中创建自定义通用列表
你好朋友我想创建自定义通用列表我的代码如下:
在我的结果列表中,它只显示循环中添加的最后一项,请帮助解决问题..
c# - 返回肥皂信封缺失值
我有一个 Soap WSDL,在我的应用程序中设置为指向 .asmx 文件的服务引用。我的响应肥皂信封有问题。我有一个集合对象,当它在我的接收代码上创建时,值就在那里。当我单步执行代码时,soap 信封现在是一个内存流并且即将被发送回调用客户端时,集合被填充。但是,再按一次 F10,我会带着一个空集合回到调用客户端。
这是我正在使用的课程的 WSDL:
这是序列化和转换为 MemoryStream 之前的响应信封
StepInstances 是关注我的问题的集合。如您所见,它按预期填充。
这是转换回信封的 MemoryStream
在它进入 MemoryStream 之后,它会被发送回调用客户端。我在其中查看对象并且 StepInstances 为空。
另请注意,我发布的 WSDL 是一部分,主要是违规类。返回的信封是一个更大的类,其中包含这些类,并且太多而无法发布。
但是我从接收客户端进入的最后一个代码填充了内存流。我击中的下一个 f10 我带着我的对象回到了调用客户端,并且集合为空。
希望这是有道理的,有人可以对此有所了解。您需要的任何更多数据我都会尝试发布。
另外值得注意的是,我只能访问 .wsdl 文件,而不是实际的 WCF 项目或类。
为了配置我的服务参考:对于集合类型,我选择了 Generic.List,而字典类型我选择了 Generic.Dictionary。
更新: wsdl 中的 APIObject 看起来像这样
更新 #2:我误以为它是 WCF,我只能访问 .wsdl 文件,编译后我将服务引用指向 .asmx 文件。
asp.net-mvc - 定义列表在剃刀页面
为什么当我尝试定义 List 对象时会插入标签名称而不是“T”?