Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根据一个数组对两个数组进行排序_Java_Arrays_Algorithm_Sorting - Fatal编程技术网

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
,您可以在这里定义依赖项,并且仅左边只有一个
列表,您需要对其进行排序。我的数组之一是文件类型。我担心第一种方法会在那里奏效。