有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java重新排列数组的最快方法是什么

在JAVA中,最快的(实时数据处理应用程序)重新排序(新索引始终相同)数组的方法是什么:

例如: 我有: double[] A = new double[] {1, 234, 12,99,0};

我需要迅速采取行动: double[] B = new double[] {A[2], A[4], A[0],A[1],A[3]};

但也许这是最有效的方法

非常感谢您的反馈


共 (1) 个答案

  1. # 1 楼答案

    我怀疑你能比你目前的工作方法做得更好

    double[] B = new double[] {A[2], A[4], A[0], A[1], A[3]};
    

    其他序列的可能候选形式可能是Arrays.copyOfArrays.copyOfRange,但您必须在此处完成的最低工作量包括:

    • 创建一个新数组
    • 对数组中每个元素的随机访问

    对于非常特定的读/写顺序(为了利用缓存线),您很可能会做得稍微好一点,一个猜测是完全按顺序读取,几乎按升序写入:

       double[] B = new double[A.length];
       B[2] = A[0];
       B[3] = A[1];
       B[4] = A[3];
       B[0] = A[2];
       B[1] = A[4];
    

    但我并不强烈期望这会明显好起来。如果您正试图消除或优化一级/二级缓存命中,那么是时候开始微基准测试了,真正的答案是您应该进行实验