繁体   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