gpt4 book ai didi

java - 如何获取列表中不等于某个值的所有位置(不使用 for 循环)?

转载 作者:行者123 更新时间:2023-12-01 07:13:05 25 4
gpt4 key购买 nike

好吧,不确定是否有比我已经做的更好的方法。现在我有一个列表(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 进行处理)。

最佳答案

如果您对数组一无所知,那么您将不得不查看每个值。这意味着循环整个数组基本上是您所能期望的最好结果。如果它已排序,或者如果您知道有关它的一些其他信息,这可能会有所帮助 - 但除此之外,没有其他选择。

关于java - 如何获取列表中不等于某个值的所有位置(不使用 for 循环)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10116195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com