所以请分别写出以上两个方法的代码
时间: 2024-11-27 11:23:38 浏览: 7
以下是两个泛型方法的示例代码:
1. 对于自然排序的`Comparable`版本,假设我们有一个`E`类型的数组:
```java
public static <E extends Comparable<E>> void insertionSort(E[] list) {
for (int i = 1; i < list.length; i++) {
E current = list[i];
int j = i - 1;
while (j >= 0 && current.compareTo(list[j]) < 0) { // 自然排序比较
list[j + 1] = list[j];
j--;
}
list[j + 1] = current; // 插入到正确位置
}
}
```
2. 对于自定义排序的`Comparator`版本:
```java
import java.util.Comparator;
public static <E> void insertionSort(E[] list, Comparator<? super E> comparator) {
for (int i = 1; i < list.length; i++) {
E current = list[i];
int j = i - 1;
while (j >= 0 && comparator.compare(current, list[j]) < 0) { // 自定义比较
list[j + 1] = list[j];
j--;
}
list[j + 1] = current; // 插入到正确位置
}
}
```
在这个版本中,你需要在调用方法时传入一个已经创建好的`Comparator`对象,比如`Collections.reverseOrder()`用于降序排序,`Collections.sort()`用于升序排序。
阅读全文