美文网首页
泛型程序设计-泛型类

泛型程序设计-泛型类

作者: 掌灬纹 | 来源:发表于2023-10-12 17:33 被阅读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);
            }
        }
    }
    
    
    

    相关文章

      网友评论

          本文标题:泛型程序设计-泛型类

          本文链接:https://www.haomeiwen.com/subject/xdrobdtx.html