我需要根据另一个数组中保存的位置对数组进行排序。

我所拥有的作品,但是有点慢,是否有更快/更好的方法来实现呢?

2部分:

第1部分

int i = mArrayName.size();
int temp = 0;
for(int j=0;j<i;j++){
            temp = mArrayPosition.get(j);
            mArrayName.set(temp, mArrayNameOriginal.get(j));
        }


在这一部分中,mArrayPosition是我希望将mArrayName放入的位置。

例如
输入:
mArrayName =(一,二,三)
mArrayPosition =(2,0,1)

输出:
mArrayName =(三,一,二)

第2部分

int k=0;
int j=0;
do{
    if(mArrayName.get(k)!=mArrayNameOriginal.get(j)){
        j++;
    }else{

        mArrayIdNewOrder.set(k, mArrayId.get(j));
            k++;
            j=0;
        }
    }while(k < mArrayName.size());
}


在这一部分中,mArrayName是重新排序的名称数组,mArrayNameOriginal是原始名称数组。

例如
mArrayName =(三,一,二)
mArrayNameOriginal =(一,二,三)

现在,我想比较这两个数组,找出哪些条目相等,并将其与其中具有rowId号的新数组相关。

例如
输入:
mArrayId =(001,002,003)

输出:
mArrayIdNewOrder =(003,001,002)

因此,我将获得mArrayIdNewOrder id与mArrayName中的正确名称匹配。

就像我说的那样,这些方法有效,但是有没有更快/更好的方法呢?我尝试查看Arrays.sort和比较器,但它们似乎只是按字母或数字排序。我看到了一些类似的东西,可以在比较器中创建自己的规则,但最终可能会与已有的相似。

很抱歉这个令人困惑的问题。如果需要,我会尝试消除任何歧义。

最佳答案

我发现最好的性能读取是Android's Designing For Performance doc。您违反了一些对您有所帮助的“ Android方式”样式。

您在每个循环中使用了多个内部吸气剂,看起来像一个简单的值。通过直接访问字段来重做此操作。

如需额外的积分,请发布您的效果比较结果!我很想看看他们!

07-26 08:56