为什么要使用泛型:
泛型程序设计意味着编写的代码可以对多种不同类型的对象重用,可以以工厂的角度去理解。泛型使用的三个水平
- 基本水平,仅使用JDK定义好的泛型类,如ArrayList
- 混合使用不同泛型类,了解参数化泛型类内部工作原理
- 实现自己的泛型类与泛型方法,提供其它程序员使用
定义简单的泛型类解决一个简易问题
如何在一个方法中返回一系列字符串中的,字典序最小值和字典序最大值?
- 泛型类定义
package com.ht.actuatorlearn.generic;
/**
* 最简单的泛型类 T作为表示任意类型
* 如果还有可用相邻的 U和S代替
*
* @author: lht
* @date: 2023-10-13
*/
public class Pair<T> {
private T first;
private T second;
public T getFirst() {
return first;
}
public void setFirst(T first) {
this.first = first;
}
public T getSecond() {
return second;
}
public void setSecond(T second) {
this.second = second;
}
public Pair(T first, T second) {
this.first = first;
this.second = second;
}
public Pair() {
this.first = null;
this.second = null;
}
}
- 示例
compareTo方法,比较两个字符串时,相同返回0,前一个小返回负整数,前一个大返回正整数。
package com.ht.actuatorlearn.generic;
/**
* 泛型示例
*
* 编写一个方法 获取一个字符串数组最大值与最小值
*
* @author: lht
* @date: 2023-10-13
*/
public class PairMinMax {
public static void main(String[] args) {
String[] words = new String[]{"Tandy", "Lucy", "Mirror", "Array", "Well"};
Pair<String> pair = ArrayAlg.minMax(words);
System.out.println("Max: " + pair.getFirst() + ", Min: " + pair.getSecond());
}
private static class ArrayAlg {
/**
* 获取数组中的最大值与最小值
*
* @param arr 原数组
* @return pair
*/
public static Pair<String> minMax(String[] arr) {
if (arr == null || arr.length == 0) {
return null;
}
String min = arr[0];
String max = arr[0];
for (int i = 0; i < arr.length; i++) {
if (i == 0) {
continue;
}
// 字典序靠前
if (min.compareTo(arr[i]) > 0) {
min = arr[i];
}
// 字典序靠后
if (max.compareTo(arr[i]) < 0) {
max = arr[i];
}
}
return new Pair<>(min, max);
}
}
}
网友评论