泛型程序设计

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

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
原文地址:https://www.cnblogs.com/jackydalong/p/2408515.html