zoukankan      html  css  js  c++  java
  • 泛型程序设计

       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    泛型程序设计
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    1.使用《泛型》的原因:

    @编写的代码 可以被 很多不同类型的对象 重用

    @省去<强制类型转换>

    @<< 类型参数<T> >> 的魅力:程序更好的 可读性、安全性

    2.泛型程序设计 划分 3 个熟练级别

    @基本级别:仅仅使用泛型类————如ArrayList<T> ———— 不必考虑其工作方式 //大多数程序员停留此级别

    @遇到含混不清的 错误消息:当把不同<泛型类> 混合使用时,或在与 对<类型参数>一无所知的 遗留代码 进行衔接时

    @最终级别:编写自己的<泛型类>、<泛型方法>

    3.《类型变量》使用大写形式规范:

    @在Java库中,

    <E>: 集合的元素类型

    <K, V>: 关键字、值类型

    <T>: 表示 任意类型 //需要时,可以使用临近的字母:U 、S

    4.例子
    Test/com.test.GenericClassTest.java
            
            View Code
      1 package com.test;
    2
    3 public class GenericClassTest {
    4
    5 public static void main(String[] arg){
    6 String[] a = {"abc", "ABC", "Jacky", "emma", "Jenny"};
    7 Pair<String> pair_str = ArrayAlg.minmax(a);
    8 System.out.println("<min, max> = " + pair_str.getFirst() + "," + pair_str.getSecond());
    9
    10 int[] b = {900, 1832, 200, 100};
    11 Pair<Integer> pair_int = ArrayAlg.minmax(b);
    12 System.out.println("<min, max> = " + pair_int.getFirst() + "," + pair_int.getSecond());
    13 }
    14
    15 }
    16
    17 class Pair<T> {
    18
    19 private T first;
    20 private T second;
    21
    22 /**
    23 * new Pair<String>();
    24 */
    25 public Pair() {
    26
    27 setFirst(null);
    28 setSecond(null);
    29 }
    30
    31 /**
    32 * new Pair<String>(str1, str2)
    33 * @param first
    34 * @param second
    35 */
    36 public Pair(T first, T second) {
    37
    38 this.setFirst(first);
    39 this.setSecond(second);
    40 }
    41
    42 public void setFirst(T first) {
    43 this.first = first;
    44 }
    45
    46 public T getFirst() {
    47 return first;
    48 }
    49
    50 public void setSecond(T second) {
    51 this.second = second;
    52 }
    53
    54 public T getSecond() {
    55 return second;
    56 }
    57
    58
    59
    60 }
    61
    62 class ArrayAlg {
    63
    64 /**
    65 * Get the minimum and maximum of an array of String
    66 * @param a
    67 * @return a pair of the min and max value, or null if String[] a is null or empty;
    68 */
    69 public static Pair<String> minmax(String[] a){
    70
    71 //如果数组 is null or empty --> return null
    72 if(a == null || a.length == 0){
    73 return null;
    74 }
    75
    76 String min = a[0];
    77 String max = a[0];
    78
    79 for(int i = 0; i < a.length; i++){
    80 if(a[i].compareTo(min) < 0) min = a[i];
    81 if(a[i].compareTo(max) > 0) max = a[i];
    82 }
    83
    84 Pair<String> pair = new Pair<String>(min, max);
    85 return pair;
    86 }
    87
    88 public static Pair<Integer> minmax(int[] b){
    89
    90 if(b == null || b.length == 0) return null;
    91
    92 int min = b[0];
    93 int max = b[0];
    94
    95 int i = 0;
    96 while(i < b.length){
    97 if(b[i] < min) min = b[i];
    98 if(b[i] > max) max = b[i];
    99 i++;
    100 }
    101
    102 //编译器自动装包
    103 return new Pair<Integer>(min, max);
    104
    105 }
    106 }




    我在IBM工作,可以为大家内部推荐IBM各种职位 IBM全球职位尽在以下链接(请在浏览器中打开,QQ/微信 会阻止): http://ibmreferrals.com/ 很乐意为感兴趣的小伙伴分享:我的面试经验^_^ 如需咨询,请邮件发送以下邮箱,有问必回 1026096425@qq.com
  • 相关阅读:
    map侧连接
    二次排序
    倒排索引
    多表关联
    单表关联
    Shuffle
    Partitioner
    Combiner
    CSS3中的多列
    CSS3动画
  • 原文地址:https://www.cnblogs.com/jackydalong/p/2408515.html
Copyright © 2011-2022 走看看