泛型

来源:互联网 发布:淘宝围巾店推荐知乎 编辑:程序博客网 时间:2024/06/08 09:00

/**

* 关于 jdk5.0 的新特性, 泛型 (编译期)

* 1.为什么要引入泛型

*                 可以统一集合中的数据类型         

*                 可以减少强制类型转化

*                 

* 2。泛型如何实现

* 3.泛型的优缺点

*                 优点:统一了类型,减少了强制类型转换

*                 缺点:只能存储一种类型

*

*

* 不使用泛型的缺点:

*                 如果不适用泛型,元素的类型统一,遍历集合的时候只能取出大量的Object ,会使用大量的强制类型转化,比较麻烦

*

*

*

*/

  

  

/*

* 泛型如何实现

*

*/

  

public class GenerricTest {

public static void main(String[] args){

//创建一个 ArrayList<String> 的集合

ArrayList<String> strs=new ArrayList<String>();

  

//添加

strs.add("HHe");

strs.add("ANN");

strs.add("Hhhhh");

strs.add("reree");

  

//遍历

Iterator<String> it=strs.iterator();

  

while(it.hasNext()){

String s=it.next();

System.out.println(s);

}

  

/****************************************/

//map 使用泛型

Map<String,Integer> map=new HashMap<String,Integer>();

  

//map 中添加元素

map.put("jack",10000);

map.put("ja",10001);

map.put("ck",10002);

map.put("k",10003);

map.put("j",10004);

  

//遍历

Set<String> key=map.keySet();

Iterator it1=key.iterator();

while(it1.hasNext()){

String key1=(String) it1.next();

Integer values=map.get(key1);

}

  

  

/**************************************/

//sortedSet 如何实现泛型

SortedSet<Manager> ss=new TreeSet<Manager>();

  

Manager m1=new Manager(10000.0);

Manager m2=new Manager(10001.0);

Manager m3=new Manager(10002.0);

Manager m4=new Manager(10003.0);

Manager m5=new Manager(10004.0);

  

ss.add(m1);                

ss.add(m2);        

ss.add(m3);        

ss.add(m4);        

ss.add(m5);        

//遍历

Iterator<Manager> it2=ss.iterator();

while(it2.hasNext()){

Manager m=it2.next();

System.out.println();

}

  

  

  

}

}

class Manager implements Comparable<Manager>{//sortedSet 一定要重写 comparable接口

double sal;

Manager(double sal){

this.sal=sal;

}

  

public String toString(){

return sal+"";

}

  

@Override

public int compareTo(Manager man) {//重写 CompareTo方法

double s1=this.sal;

double s2=man.sal;

if(s1>s2){

return 1;

}else if(s1<s2){

return -1;

}else{

return 0;

}

}

}

  

/**

* 自定义泛型

*

*

*/

  

public class GenericTest03 {

public static void main(String[] args){

MyClass<String> my1=new MyClass<String>();

my1.m1("heelllllo");

  

}

}

  

//自定义的泛型

class MyClass<T>{

public void m1(T t){

System.out.println(t);

}

}

原创粉丝点击