用于存储长字符串的集合类是什么?

use*_*053 16 .net

我将每隔.01秒获得一个JSON字符串甚至更快,我必须将其插入到某个集合中,这样我以后可以遍历每一行并进行一些处理并在此之后删除该行.插入过程不断进行.我是否使用ArrayList或有点困惑Queue.

所以基本上我会插入第一个消息,然后插入第二个然后......同时另一个进程将读取第一个插入的值来处理和删除该记录,然后是第二个插入的值.请告知哪一个最快,存储量少?或者任何其他系列最符合我的要求?

编辑: 我有两种方法 -

GetMessages() - 继续在队列中获取/添加消息(此处消息仅从一个源接收,该源继续发送消息并且在我们手动停止该过程之前不会停止)

ProcessMessages() - 将读取队列记录并在处理后从队列中删除它们

Cod*_*ter 30

听起来你应该使用a ConcurrentQueue<string>,其中一个线程可以推送另一个线程可以弹出的值.

绝对不要再使用甚至考虑使用预通用ArrayList类型.

你仍然需要一些簿记代码来检查你的处理是否比插入运行得更快,否则你肯定会在某些时候耗尽内存.


Dmi*_*nko 21

您似乎正在寻找生产者 - 消费者设计模式(Wikipedia Producer-consumer_problem).

  1. 制片人创造了Json的
  2. 消费者处理它们

如果是你的情况,请尝试专门为此设计的BlockingCollection.

  • 对于这个问题,这可能确实是更好的类型,另请参阅/sf/ask/700752391/ (4认同)

Pat*_*man 11

从我如何阅读你的问题,你基本上有两个要求:

  • 这是一个队列;
  • 同时排队和出列是安全的.

我会使用ConcurrentQueue:它提供了你正在谈论的排队机制,它也是线程安全的,所以你可以同时添加和删除,而无需自己锁定队列.

如果没有确切的信息,哪一个是最好的性能和记忆力是很难说的.如果你有很多重复的字符串,你可以尝试实习它们或自己创建一个缓存重复元素的地方.