我有三个阵列:
appNames
packageNames
appIcons
这里的app name是一个字符串,包名也是字符串,但包名和appIcons是文件类型。我想在列表中显示所有这三个东西,但是按照appNames的顺序。
现在,我想按字母顺序对这个数组进行排序,还有其他两个数组,具体取决于此。
我在Java
工作,并寻找一些简单的方法。 PHP
有一个名为array_multisort()
的内容。
答案 0 :(得分:2)
本机Java方法是将来自三个并行数组的值捆绑到单个数组或具有三个字段的对象列表中,使用自定义比较器对其进行排序,然后将值重新分配回三个数组。
不需要新类的方法是创建索引数组,使用自定义比较器对其进行排序,并使用生成的索引顺序对三个数组进行重新排序。
例如,如果您的数组看起来像这样
a = {"quick", "brown", "fox"};
b = { 5, 10, 1};
c = {.1, .7, .2};
你的未排序索引数组看起来像这样
i = {0, 1, 2} // Indexes of quick, brown, fox
你的排序索引数组看起来像这样
i = {1, 2, 0} // Indexes of brown, fox, quick
此时,您可以遍历已排序的索引数组,并为a
,b
和c
创建新数组:
a1 = {"brown", "fox", "quick"}
b1 = {10, 1, 5}
c1 = {.7, .2, .1}
答案 1 :(得分:1)
不是一种超级有效的排序方式,但如果数组不大,可以采用旧的方式进行排序
for (int i=0; i< appNames.lenght; i++)}
for (int j=i+1; j< appNames.lenght; j++){
if (appNames[i].compare(appNames[j])<0){
// switch i and j in all arrays
String temp= appNames[i];
appNames[i]=appNames[j];
appNames[j]=temp;
temp= packageNames[i];
packageNames[i]=packageNames[j];
packageNames[j]=temp;
temp= appIcons[i];
appIcons[i]=appIcons[j];
appIcons[j]=temp;
}
}
}