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