泛型程序设计-泛型类

2023-10-12  本文已影响0人  掌灬纹

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

泛型使用的三个水平

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


上一篇 下一篇

猜你喜欢

热点阅读