Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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_Sorting_Data Structures_Comparison - Fatal编程技术网

Java 使用不同标准进行排序/比较

Java 使用不同标准进行排序/比较,java,sorting,data-structures,comparison,Java,Sorting,Data Structures,Comparison,所以我有来自STDIN的数据,我在每行创建对象,其中包含一个数字数据字段。基于此字段,我想将它们排序为PriorityQueue或LinkedList。在这个排序之后,我将为要保存的对象计算另一个值(这些值将基于频率等)。然后,我想使用第二个值作为新标准,将其排序为另一个PQ或LL 每次使用不同的标准对相同的对象进行两次排序的最佳方法是什么?我不想用不同的compareTo方法创建同一对象的两种类型。我希望有更好的方法。除了在对象本身中实现可比性,您应该使用比较器: 这使您能够使用不同的比较逻

所以我有来自STDIN的数据,我在每行创建对象,其中包含一个数字数据字段。基于此字段,我想将它们排序为PriorityQueue或LinkedList。在这个排序之后,我将为要保存的对象计算另一个值(这些值将基于频率等)。然后,我想使用第二个值作为新标准,将其排序为另一个PQ或LL


每次使用不同的标准对相同的对象进行两次排序的最佳方法是什么?我不想用不同的compareTo方法创建同一对象的两种类型。我希望有更好的方法。

除了在对象本身中实现可比性,您应该使用比较器:


这使您能够使用不同的比较逻辑来比较相同的对象。

除了在对象中实现可比较外,您还应该使用比较器:


这使您能够使用不同的比较逻辑来比较相同的对象。

您是否考虑过使用两个不同的对象?您是否考虑过使用两个不同的?+1,但是,作为一个次要的澄清,请注意,如果有意义,可以在对象本身中定义比较器。例如,在一个表示完整发货地址的对象中,可以有许多比较器,如byName、byAddress、byZipCOde等。虽然这是可能的,但是否应该这样做仍有争议,因为这违反了单一责任规则+1,但作为一个次要澄清,请注意,如果有意义,可以在对象本身中定义比较器。例如,在一个表示完整发货地址的对象中,可以有许多比较器,如byName、byAddress、byZipCOde等。虽然这是可能的,但是否应该这样做仍有争议,因为它违反了单一责任规则