gpt4 book ai didi

Java:将不同类型的数组相互排序

转载 作者:行者123 更新时间:2023-12-02 08:22:40 25 4
gpt4 key购买 nike

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

我的方法有效,但有点慢,有没有更快/更好的方法来实现这个?

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 方式”做事方式。

您在每个循环中使用多个内部 getter 来获取看起来简单的值。通过直接访问字段重做此操作。

为了获得额外的积分,请发布您的性能比较结果!我很想见到他们!

关于Java:将不同类型的数组相互排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5188413/

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