arrays - VB.net 从数组中获取每第 n 条记录
问题描述
我有动态数组,每分钟接收数千条记录,我正在努力实现:
使用计时器我需要从主数组中获取记录。每 1 秒进程应该访问主数组并获取 20 条记录,然后在第二秒之后它将获取接下来的 20 条记录,等等......
实现这一目标的最佳和最快方法是什么?
我有主数组,其中包含数千条不断增长的记录:
Public Shared myBigArray() As String = {}
使用以下方法将新项目添加到数组中:
Module Module2
<Extension()>
Public Sub Add(Of T)(ByRef arr As T(), item As T)
Array.Resize(arr, arr.Length + 1)
arr(arr.Length - 1) = item
End Sub
End Module
myBigArray.Add(message)
要将记录从主数组复制到新数组,我使用:
Array.Copy(myBigArray, smallArray, 20)
我需要循环复制过程,以便它复制新记录,每个请求复制 20 条下一条记录。
解决方案
当你想要它快时,你不应该调整数组的大小。在这种情况下,列表应该更合适。对于两者,您都应该记住 Int32.MaxSize 的最大大小(大约 2 十亿)。
示例(仍然需要一些错误检查等):
Imports System
Imports System.Collections.Generic
Public Module Module1
Public Sub Main()
Dim myBigList as New List(of string)
'debug: fill with random nu
For i As Integer = 1 To 100
myBigList.Add("string_" & i)
Next
Dim _startpos As Integer = 0
For i As Integer = 1 to 5
Console.WriteLine("_startpos:" & _startpos )
For Each _s As String in myBigList.GetRange(_startpos,20)
Console.WriteLine(_s)
Next
_startpos += 20
Next
End Sub
End Module
推荐阅读
- c# - 将 c++/cli dll 加载到 c# appdomains 的标准/正确方法是什么?
- python - 如何在 python 中使用 TAR 压缩 2GB 文件
- python - ValueError:期望 x 为非空数组或数据集
- sql - 计数/分组然后左连接 - Oracle SQL
- python - 如何在不使用 for 或 while 循环的情况下浏览链接列表?
- oracle - 在 Oracle 云中安装 utPLSQL
- python - Django 查询首先保留特定项目,然后将 order_by 应用于其余项目
- android - Android USB 总线一致性
- javascript - 在 Jest 测试套件中访问 localStorage
- javascript - Cypress - Cucumber 场景大纲