泛型程序设计-泛型类

为什么要使用泛型:
泛型程序设计意味着编写的代码可以对多种不同类型的对象重用,可以以工厂的角度去理解。

泛型使用的三个水平

  • 基本水平,仅使用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);
        }
    }
}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容