1,有时需要对类型T进行限制,比如,如果T的对象调用了compareTo方法,那就必须实现comparable接口;
public static T min(T[] a)…
2,而且这个方法,只能被实现了comparable接口的类调用,否则报错。
3,注意,用extends而不是implements
计算泛型数组的最大值和最小值。
package demo3;
import java.time.LocalDate;
public class PairTest2 {
public static void main(String[] args) {
LocalDate[] birthdays = {
LocalDate.of(1906, 12, 4),
LocalDate.of(1946, 10, 14),
LocalDate.of(1996, 2, 24),
LocalDate.of(1976, 1, 8),
};
Pair<LocalDate> mm = ArrayAlg.minmax(birthdays);
System.out.println(mm.getFirst());
System.out.println(mm.getSecond());
}
}
package demo3;
public class ArrayAlg {
public static <T extends Comparable> Pair<T> minmax(T[] a) {
if(a == null || a.length == 0) return null;
T min = a[0];
T max = a[0];
for(int i = 1;i < a.length; i++) {
if(min.compareTo(a[i]) > 0) min = a[i];
if(max.compareTo(a[i]) < 0) max = a[i];
}
return new Pair<>(min,max);
}
}
package demo3;
public class Pair<T> {
private T first;
private T second;
public Pair() {
first =null;
second = null;
}
public Pair(T first,T second) {
this.first = first;
this.second = second;
}
public T getFirst() {
return first;
}
public T getSecond() {
return second;
}
public void setFirst(T first) {
this.first = first;
}
public void setSecond(T second) {
this.second = second;
}
}