通过"<"或">"作为Comparator中的参数

时间:2018-04-12 10:14:12

标签: java algorithm sorting methods comparator

我正在研究一种分类数据的方法,该方法有两个参数:

  

通用 compile 'com.onesignal:OneSignal:3.+@aar' compile 'com.google.android.gms:play-services-gcm:10.2.1' compile 'com.firebase:firebase-client-android:2.5.2+' ArrayList的实例。

Comparator

我想让用户决定是按降序还是按升序排序。我可以通过某种方式将符号传递给public static <T> void insertionSort(ArrayList<T> array, Comparator<T> c) { ... } 吗?我问这个是因为我无法将其他参数添加到我的函数中。

1 个答案:

答案 0 :(得分:2)

  

我想让用户决定是按降序还是按升序排序。

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

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

不需要额外的参数。

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

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