Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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 按相同标准对两个int[]进行排序_Java_Arrays_Sorting - Fatal编程技术网

Java 按相同标准对两个int[]进行排序

Java 按相同标准对两个int[]进行排序,java,arrays,sorting,Java,Arrays,Sorting,我有两个int[],开始和结束。它们指的是一系列行:开始[0]是行0的开始位置,结束[0]是行0的结束位置。我希望以升序开始排序,然后以相同的方式结束排序,这样数组就保持对齐 在MatLab中,可以执行以下操作: [idx,StartSorted]=排序(开始); EndSorted=End(idx) 在Java中执行相同操作的最佳方法是什么?编写一个元组类,还是有更好的方法 一般来说,像这样处理成对数据的最佳方法是什么 谢谢 谢谢你们,太好了 不要使用两个int数组。使用单个数组行,其中行将

我有两个int[],开始和结束。它们指的是一系列行:开始[0]是行0的开始位置,结束[0]是行0的结束位置。我希望以升序开始排序,然后以相同的方式结束排序,这样数组就保持对齐

在MatLab中,可以执行以下操作:

[idx,StartSorted]=排序(开始); EndSorted=End(idx)

在Java中执行相同操作的最佳方法是什么?编写一个元组类,还是有更好的方法

一般来说,像这样处理成对数据的最佳方法是什么

谢谢



谢谢你们,太好了

不要使用两个
int
数组。使用单个数组
,其中
将是一个具有
开始
属性和
结束
属性的类

然后,要按行的开头对行进行排序(在Java 8中):


如您所述,最好的方法是创建某种类型的
Tuple
类来维护这两个值。您还应该实现
equals
,并使您的类实现并实现
compareTo
。完成此操作后,可以对
Tuple
实例集合进行排序(使用),它们将根据
compareTo
方法指定的顺序进行排序。在此特定实例中,您的比较将仅基于
元组中
start
的值

如果您不太关心通过实现
Comparable
来定义类的隐式排序,那么您可以指定一个特殊比较器,并将其用于对象数组:

//tuples is an array
//Tuple::getStart is a method reference to the getStart method
//in tuple. So you get an ad-hoc comparator that uses this
//function as the basis for ordering
Arrays.sort(tuples, Comparator.comparingInt(Tuple::getStart)

可能是我,但分类地图听起来是个好主意。
//tuples is an array
//Tuple::getStart is a method reference to the getStart method
//in tuple. So you get an ad-hoc comparator that uses this
//function as the basis for ordering
Arrays.sort(tuples, Comparator.comparingInt(Tuple::getStart)