好吧不确定是否有比我已经在做的更好的方法。现在我有一个列表(int []),其中有超过 10,000 个等于 0 的值,我只寻找非零项。
我目前的方法只是做一个 for 循环并捕获所有非零值,但我经常这样做,并且分析显示它占用了我大量的 cpu 时间(因为我经常这样做)。有没有一种方法可以在没有昂贵的 cpu 进程的情况下获得相同的结果(因为有 10,000 个项目,只有不到 100 个是非零的)?
这是我的数据示例:
int[] list = {0,0,0,1,0,10 }
int[] list_names = {a,b,c,d,e,f}
我最终需要做的就是使用这两个列表创建另外两个列表,其中只有非零值及其名称(因此 D=1 和 F=10)。我已经看到了一些解决方案,我需要在结果工作之前对其进行排序,但这是一个问题,因为如果我对数据列表进行排序,那么我无法识别它的名称。
这可能吗?与 for 循环相比,有没有更快的方法?
抱歉,我应该提一下,这个大列表仍在我的程序中进行处理,我正在尝试这样做以减少它们的内存占用。当我真正需要的是非零值时,我有一个包含几亿个这些列表的队列被完整存储,所以这样做是为了节省内存(这似乎是有效的),但我也尽量不这样做对 cpu 进行一点打击以使其达到这一点(因为我需要 cpu 进行处理)。