JAVA集合框架(二)

android培训java培训期待与您交流! ----------

泛型问题

 ----------------JDK1.5版本以后出现新特性。

----------------用于解决安全问题,是一个类型安全机制。
1. 格式问题 写在类的后面 ,通过<>表示

  例如 ArrayList<String> al = new ArrayList<String>();

  表示只能存储String类型的字符串.

2. 泛型优点
       安全性提高--出现问题的情况由运行时期,提升到了编译时期
       避免了强制转换
      
3. 泛型在TreeSet中的使用

4. 泛型类,泛型方法

5. 泛型的通配符  <?> 


6. 泛型的限定
   <? extends E> 接收E类型和E的子类型,上限限定
   <? super E> 接收E类型和E的父类型 ,下限限定

//代码示例1

import java.util.ArrayList;
import java.util.Iterator;
public class GenericDemo01 
{
public static void main(String[] args)
{
ArrayList<Person> al= new ArrayList<Person>();
al.add(new Person("wangwu01",20));
al.add(new Person("wangwu02",21));
al.add(new Person("wangwu03",22));
al.add(new Person("wangwu04",23));

Iterator<Person> it = al.iterator();
while(it.hasNext())
{
Person p =it.next();
System.out.println(p.getName()+"..."+p.getAge());
}
}

}
class Person
{
private String name;
private int age;
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}


}



//代码示例2

import java.util.*;

public class GenericDemo02 
{
public static void main(String[] args)
{
TreeSet<Person03> al = new TreeSet<Person03>();
//HashSet<Person03> al =new HashSet<Person03>();
//ArrayList<Person03> al = new ArrayList<Person03>();

al.add(new Person03("dhangsan01",20));
al.add(new Person03("zhangsan02",25));
al.add(new Person03("ahangsan03",23));
al.add(new Person03("fhangsan04",22));
al.add(new Person03("changsan05",28));

Iterator<Person03> it = al.iterator();
while(it.hasNext())
{
Person03 p = it.next();
System.out.println(p.getName()+"..."+p.getAge());
}

}
}
class Person03 implements Comparable<Person03>
{
private String name;
private int age;
Person03(String name, int age)
{
this.name = name;
this.age = age;
}

public int compareTo(Person03 obj)
{
Person03 p = (Person03)obj;
int num = this.age - p.age;
return num==0?this.name.compareTo(p.name):num;
}
 
public boolean equals(Object obj)
{
if(this==obj)
return true;
if(!(obj instanceof Person03))
return false;

Person03 p = (Person03)obj;
return this.name.equals(p.name) &&this.age==p.age;

public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}

public void setAge(int age)
{
this.age = age;
}
public int getAge()
{
return age;
}
}


//代码示例3

class MyCom1 implements Comparator<Person04>
{
public int compare(Person04 p1, Person04 p2)
{
int num= p1.getAge() -p2.getAge();
return num==0?p1.getName().compareTo(p2.getName()):num;
}
}



//代码示例4

import java.util.*;
public class GenericDemo04 
{
public static void main(String[] args)
{
//创建一个程序员集合 用来存储程序员元素
ArrayList<ProGrammer> ap = new ArrayList<ProGrammer>();

ap.add(new ProGrammer("zhangsan", "001", 20));
ap.add(new ProGrammer("zhangsan", "002", 24));
ap.add(new ProGrammer("zhangsan", "003", 30));

//迭代程序员集合
iterators(ap);

//创建经理集合.用来存储经理元素
ArrayList<Manager> am = new ArrayList<Manager>();
am.add(new Manager("lisi", "AA1", 40));
am.add(new Manager("lisi", "AA2", 50));
am.add(new Manager("lisi", "AA3", 44));

//迭代经理集合
iterators(am);
}

//创建迭代器,泛型通配符,
private static void iterators (Collection<? extends Employee> coll)
{
Iterator<? extends Employee> it = coll.iterator();
while(it.hasNext())
{
Employee p= it.next();
p.job();
}
}
}
//定义一个共性类,
abstract class Employee
{
private String name;
private String id;
private int  d;
Employee(String name, String id, int d) 
{
super();
this.name = name;
this.id = id;
this.d = d;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getD() {
return d;
}
public void setD(int d) {
this.d = d;
}
public abstract void job();
}


//定义经理类,类中有属性 和工作方法
class Manager extends Employee
{
public Manager(String name, String id, int d)
{
super(name, id , d);
}
public void job()
{
System.out.println(getName()+"..."+getId()+"...zai shihui");
}

}
//定义程序员类,类中有属性和 工作方法
class ProGrammer extends Employee
{
public ProGrammer(String name, String id, int d)
{
super(name, id, d);
}
public void job()
{
System.out.println(getName()+"..."+getId()+"...zai gzuo");
}
}



//代码示例5

/*
 * 泛型方法
 * 泛型类
 */
class Gen<QQ>
{
public void show(QQ q)
{
System.out.println("show..."+q);
}

//静态方法上定义泛型,<>需要写在static之后
public static<TT>  void method(TT t)
{
System.out.println("method..."+t);
}
}

public class GenericDemo05 
{
public static void main(String[] args)
{
Gen<String> gen = new Gen<String>();

gen.show("hello");
Gen.method(1234);
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值