簡體   English   中英

Java:將不同類型的數組相互排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM