java - 将 "<"或 ">"作为参数传递给比较器

标签 java algorithm sorting methods comparator

我正在研究一种对具有两个参数的数据进行排序的方法:

a generic ArrayList and an instance of Comparator.

public static <T> void insertionSort(ArrayList<T> array, Comparator<T> c) { ... }

我想让用户决定是按降序还是升序排序。我可以通过以某种方式将符号传递给 Comparator 来实现吗?我问这个是因为我无法将其他参数添加到我的函数中。

最佳答案

I would like to let the user decide if sort in descending or ascending order.

API 用户将通过调用方法并传递 Comparator<T> 的实例来做出此决定。 :

insertionSort(list, Comparator.naturalOrder());
insertionSort(list, Comparator.reverseOrder());

不需要额外的参数。


如果您正在设计一个用户输入所需顺序(我将其命名为 input )的应用程序,则可以使用一个简单的三元运算符:

insertionSort(list, ">".equals(input) ? naturalOrder() : reverseOrder());

关于java - 将 "<"或 ">"作为参数传递给比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49793924/

相关文章:

java - Spring MVC 的问题。如何从两个或多个对象创建 View ?

c++ - 埃拉托色尼筛法算法

c - 删除数组复制步骤时合并排序问题

java - 如何从 customRevisionEntity 检索用户名

java - Android 中的按钮不会禁用

c++ - 获取 vector 的总和

java - 使用 Collections.sort 对自定义类数组列表字符串进行排序

c++ - 在 C++ 中为指针 vector 创建自定义排序时遇到问题

java - JPA 多对多连接表实体与复合键 "null id generated "

javascript - 最小距离哈密顿路径 Javascript