程序的主要几个比较重要且复杂用法之三泛型

一般的类和方法都是针对特定数据类型的,当写一个对多种数据类型都适用的类和方法时就需要使用泛型编程,java的泛型编程类似于C++中的模板,即一种参数化类型的编程方法,具体地说就是将和数据类型相关的信息抽象出来,主要提供通用的实现和逻辑,和数据类型相关的信息由使用时参数决定。

1.泛型方法

public <T> void Set(T t)
{
System.out.println(t.getClass().getName());
}

2.泛型集合

  1. public class New{
  2. public static <K, V> Map<K, V> map(){
  3. return new HashMap<K, V>();
  4. }
  5. public static <T> List<T> list(){
  6. return new ArrayList<T>() ;
  7. }
  8. public static <T> LinkedList<T> lList(){
  9. return new LinkedList<T>();
  10. }
  11. public static <T> Set<T> set(){
  12. return new HashSet<T>();
  13. }
  14. public static <T> Queue<T> queue(){
  15. return new LinkedList<T>() ;
  16. }
  17. ;public static void main(String[] args){
  18. Map<String, List<String>> sls = New.map();
  19. List<String> ls = New.list();
  20. LinkedList<String> lls = New.lList();
  21. Set<String> ss = New.set();
  22. Queue<String> qs = New.queue();
  23. }
  24. }
时间: 2024-11-10 22:14:21

程序的主要几个比较重要且复杂用法之三泛型的相关文章

自定义Toast、程序退出时Toast也退出、Toast的用法

http://blog.csdn.net/wangqilin8888/article/details/7464806 当我们在一个应用中用到Toaster来做为提示时,发现这样一个问题,当某个条件服合时,会弹出Toaster的对话框,不停地执行这个条件,会不停进行Toaster.show的显示,执行几次就现示几次,即使这个应用程序退出也会不停地Toast.show地显示,这样一来会给用户带来一种不好体验.当我们将应用程序退出了,就不应该Toast.show显示了. 我们可以在应用程序退出onDe

编写高质量代码改善C#程序的157个建议——建议32:总是优先考虑泛型

建议32:总是优先考虑泛型 泛型的优点是多方面的,无论泛型类还是泛型方法都同时具备可重用性.类型安全性和高效率等特性,这是非泛型和非泛型方法无法具备的. 以可重用性为例: class MyList { private int[] items; public int this[int i] { get { return items[i]; } set { this.items[i] = value; } } public int Count { get { return items.Length;

编写高质量代码改善C#程序的157个建议——建议35:使用default为泛型类型变量指定初始值

建议35:使用default为泛型类型变量指定初始值 有些算法,比如泛型集合List<T>的Find算法,所查找的对象可能会是值类型,也有可能是引用类型.在这种算法内部,我们常常会为这些值类型或引用类型变量指定默认值.于是,问题来了:值类型变量的默认初始值是0值,而引用类型变量的默认初始值是null值,显然,这会导致下面的编译出错: public T Func<T>() { T t = null;return t; } 无法将 null 转换为类型参数“T”,因为它可能是一种不可为

黑马程序员--OC基础--NSFileManager用法深入

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- /* NSFileManager用法深入一 用于文件访问:获取文件.文件夹的属性和子目录的信息 */ 1 #import <Foundation/Foundation.h> 2 3 int main() { 4 @autore

黑马程序员--OC基础--NSDictionary用法

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 1 #import <Foundation/Foundation.h> 2 3 4 /* 5 字典: 6 key-->value 7 索引-->文字内容 8 9 里面存储的东西都是键值对 10 11 12 */ 1

【微信小程序】详解wx:if elif else的用法(搭配view、block)

1.搭配view <view wx:if="{{boolean==true}}"> <view class="bg_black"></view> </view> <view wx:elif="{{boolean==false}}"> <view class="bg_red"></view> </view> <view wx:e

《编写高质量代码 改善python程序的91个建议》第二章 惯用法 8-18

建议8:调试语句assert expression, "sentence", python -O xx.py 可以禁用断言,建议少用断言: 建议9:数据交换不推荐使用中间值 语句执行时间: from timeit import Timer Timer('x,y = y,x').timeit() ## x,y = y,x 相当于元组(x,y)= (y,x) 涉及packing和unpacking def swap() x = 2 y = 3 x,y = y,x import disdis

RPM程序包管理以及yum的应用

在早期我们使用源代码的方式来安装软件时,都需要先把源程序代码编译成可执行的二进制安装程序,然后进行安装.这就意味着每次安装软件都需要经过预处理-->编译-->汇编-->链接-->生成安装文件--> 安装,这个复杂而艰辛的过程.为简化安装步骤,便于广大用户的安装部署程序,程序提供商就在特定的系统上面编译好相关程序的安装文件并进行打包,提供给大家下载,我们只需要根据自己的系统去下载相应的安装包进行安装即可,其类似 Windows 的安装方式,由程序开发者直接在已知的系统上面编译好

黑马程序员——经典C语言程序设计100例

1.数字排列 2.奖金分配问题 3.已知条件求解整数 4.输入日期判断第几天 5.输入整数进行排序 6.用*号显示字母C的图案 7.显示特殊图案 8.打印九九口诀 9.输出国际象棋棋盘 10.打印楼梯并按条件打印笑脸 11.经典兔子问题 12.判断素数 13.水仙花数问题 14.正整数分解质因数 15.学习成绩划分 16.正整数求其最大公约数和最小公倍数 17.统计英文字母/空格/数字个数 18.求s=a+aa+aaa+aa...a的值 19.求解"完数" 20.球体自由落下物理问题