/*
定义一个简单得泛型类
泛型类就是具有一个或者多个类型变量的类
*/
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 void getSecond(T second) {
this.second = second;
}
public void setFirst(T newValue) {
first = newValue;
}
public void setSecond(T newValue) {
second = newValue;
}
public T getFirst() {
return first;
}
public T getSecond() {
return second;
}
}
/*
Pair类引了一个类型变量 T ,用尖括号括起来,并放在类名活后面。
泛型类可以有多个变量。
如: 定义Pair类,其中第一个域和第二个域使用不同的类型
public class Pair< T, U >{ ......}
类型变量是用大写,且比较短,在JAVA库中E表示 集合元素类型 ,
K和V表示 表的关键字与值得类型。
用具体得类型替换类型变量就可以实例化泛型类,如:
public <String>
可以将结果想象成带有构造器得普通类:
Pair<String>()
Pair<String>(String , String)
和方法set ,get
换句话说,泛型类就是普通类的工厂。
*/
public class PairTest1 {
public static void main(String[] args) {
String [] words = {"Mary" , "had" ,"a" ,"little", "lamb"};
Pair<String> mm = ArrayAlg.minmax(words);
System.out.println("min = "+ mm.getFirst());
System.out.println("max = "+ mm.getSecond());
}
}
class ArrayAlg{
public static Pair<String> minmax(String[] a)
{
if(a == null || a.length == 0)
return null;
String min = a[0];
String 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);
}
}