Java 使用不同标准进行排序/比较
所以我有来自STDIN的数据,我在每行创建对象,其中包含一个数字数据字段。基于此字段,我想将它们排序为PriorityQueue或LinkedList。在这个排序之后,我将为要保存的对象计算另一个值(这些值将基于频率等)。然后,我想使用第二个值作为新标准,将其排序为另一个PQ或LLJava 使用不同标准进行排序/比较,java,sorting,data-structures,comparison,Java,Sorting,Data Structures,Comparison,所以我有来自STDIN的数据,我在每行创建对象,其中包含一个数字数据字段。基于此字段,我想将它们排序为PriorityQueue或LinkedList。在这个排序之后,我将为要保存的对象计算另一个值(这些值将基于频率等)。然后,我想使用第二个值作为新标准,将其排序为另一个PQ或LL 每次使用不同的标准对相同的对象进行两次排序的最佳方法是什么?我不想用不同的compareTo方法创建同一对象的两种类型。我希望有更好的方法。除了在对象本身中实现可比性,您应该使用比较器: 这使您能够使用不同的比较逻
每次使用不同的标准对相同的对象进行两次排序的最佳方法是什么?我不想用不同的compareTo方法创建同一对象的两种类型。我希望有更好的方法。除了在对象本身中实现可比性,您应该使用比较器:
这使您能够使用不同的比较逻辑来比较相同的对象。除了在对象中实现可比较外,您还应该使用比较器:
这使您能够使用不同的比较逻辑来比较相同的对象。您是否考虑过使用两个不同的对象?您是否考虑过使用两个不同的?+1,但是,作为一个次要的澄清,请注意,如果有意义,可以在对象本身中定义比较器。例如,在一个表示完整发货地址的对象中,可以有许多比较器,如byName、byAddress、byZipCOde等。虽然这是可能的,但是否应该这样做仍有争议,因为这违反了单一责任规则+1,但作为一个次要澄清,请注意,如果有意义,可以在对象本身中定义比较器。例如,在一个表示完整发货地址的对象中,可以有许多比较器,如byName、byAddress、byZipCOde等。虽然这是可能的,但是否应该这样做仍有争议,因为它违反了单一责任规则