zoukankan      html  css  js  c++  java
  • java泛型

    1.泛型类与泛型方法

    package Generic;
    
    import java.io.Serializable;
    import java.time.LocalDate;
    import Generic.ArrayAlg.Pair;
    
    public class ArrayDemo{
        public static void main(String[] args) {
            LocalDate[] birthdays = {
                LocalDate.of(1906, 12, 9),
                LocalDate.of(1815, 12, 10),
                LocalDate.of(1903, 12, 3),
                LocalDate.of(1910, 6, 22)
            };
            Pair<LocalDate> mm = ArrayAlg.minmax(birthdays);
            System.out.println("min = " + mm.getFirst());
            System.out.println("max = " + mm.getSecond());
        }
    }
    
    class ArrayAlg{    
        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 T getFirst() {
                return this.first;
            }
            
            public T getSecond() {
                return this.second;
            }
            
            public void setFirst(T newValue){
                first = newValue;
            }
            
            public void setSecond(T newValue) {
                second = newValue;
            }
        }
        
        public class Interval<T extends Comparable & Serializable> implements Serializable{
            private T lower;
            private T upper;
    
            public Interval(T first, T second) {
                if(first.compareTo(second)<=0) {
                    lower = first;
                    upper = second;
                }else {
                    lower = second;
                    upper = first;
                }
            }
        }
        
        public static <T extends Comparable> Pair<T> minmax(T[] array) {
            if (array == null || array.length == 0) {
                return null;
            }
            
            T min = array[0];
            T max = array[0];
            for (int i = 1; i < array.length; i++) {
                if (min.compareTo(array[i]) > 0) {
                    min = array[i];
                }
                if (max.compareTo(array[i]) < 0) {
                    max = array[i];
                }
            }
            
    //        ArrayAlg arrayAlg = new ArrayAlg();
    //        return arrayAlg.new Pair<>(min, max);
            return (new ArrayAlg()).new Pair<>(min, max);//这条语句等同于上面两行
        }
    }

    运行结果:

    min = 1815-12-10
    max = 1910-06-22
  • 相关阅读:
    队列的链式存储结构实现
    堆栈的链式存储实现
    使用C#改变windows系统本地时间
    oracle 多数值录入校验(分隔符“/”)
    oracle中in和exists的区别
    redis安装 windows版(图形化安装)
    Oracle 返回结果集
    饿了么4年 + 阿里2年:研发路上的一些总结与思考
    Oracle 获取各类时间
    Oracle表中已有数据,修改字段长度
  • 原文地址:https://www.cnblogs.com/sunzhongyu008/p/11397215.html
Copyright © 2011-2022 走看看