[英]Java: Sorting different types of arrays to one another
我需要根據另一個數組中的位置對數組進行排序。
我有什么工作,但它有點慢,是否有更快/更好的方法來實現這一點?
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和比較器,但它們似乎只按字母順序或數字順序排序。 我看到類比我可以在比較器中創建自己的規則,但它可能最終會與我已有的相似。
抱歉這個令人困惑的問題。 如果需要,我會盡力消除任何含糊之處。
你可以使用某種形式的元組,一些類來保存id和name。 你只需要一個java.util.Comparator來相應地比較它,兩個元素將一起移動,你的代碼將更清晰。
這個數據結構對於你的程序的其余部分可能很方便...如果沒有,只需再次取消它就可以了。
我發現的最佳性能讀取是Android的Designing For Performance文檔 。 你違反了一些“Android方式”的做事方式,可以幫助你。
您在每個循環中使用多個內部getter,看起來像一個簡單的值。 通過直接訪問字段來重做此操作。
如需額外積分,請發布您的效果比較結果! 我很想見到他們!
如果您的訂單索引是緊湊的,即從索引0到大小-1,那么只需使用一個數組並在之后創建更新的列表? 關於類似的東西
MyArray[] array = new MyArray[size];
for(int j=0;j< size;j++) {
array[ mArrayPosition.get(j) ] = mArrayName.get(j);
}
// create ArrayList from array
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.