Java 根据一个数组对两个数组进行排序
我有三个阵列:Java 根据一个数组对两个数组进行排序,java,arrays,algorithm,sorting,Java,Arrays,Algorithm,Sorting,我有三个阵列: appNames packageNames appIcons 这里应用程序名称是字符串,包名称也是字符串,但包名称和应用程序图标是文件类型。我想在一个列表中显示所有这三件事,但要按AppName的顺序显示 现在,我想按照字母顺序对这个数组和其他两个数组进行排序,这取决于这个 我在Java工作,正在寻找一些简单的方法PHP有一个叫做array\u multisort()的东西 本机Java方法是将三个并行数组中的值绑定到一个数组或具有三个字段的对象列表中,使用自定义比较器对其进
appNames
packageNames
appIcons
这里应用程序名称是字符串,包名称也是字符串,但包名称和应用程序图标是文件类型。我想在一个列表中显示所有这三件事,但要按AppName的顺序显示
现在,我想按照字母顺序对这个数组和其他两个数组进行排序,这取决于这个
我在
Java
工作,正在寻找一些简单的方法PHP
有一个叫做array\u multisort()
的东西 本机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 = {"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 = {"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}
这不是一种超级高效的排序方式,但如果数组不大,可以使用旧的排序方式
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;
}
}
}
(int i=0;ifor
对于(int j=i+1;j 如果(appNames[i].compare(appNames[j])是app names类型的列表String
?如果是,那么你可以使用Arrays.sort()
。如果不是,实现你自己的自定义比较器@Idos,它将是数组。在这种情况下,sort
。是的,这是字符串
@Idos,不管怎样。投票关闭:)而Java
称之为classes
,您可以在其中定义依赖于该特定类实例的所有内容,可能称为App
,它有两个列表
,可能称为packagename
和appIcons
,您可以在这里定义依赖项,并且仅左边只有一个列表,您需要对其进行排序。我的数组之一是文件类型。我担心第一种方法会在那里奏效。