day18(泛型、Map集合)总结

上传人:san****019 文档编号:181698704 上传时间:2021-05-05 格式:DOC 页数:8 大小:30.50KB
返回 下载 相关 举报
day18(泛型、Map集合)总结_第1页
第1页 / 共8页
day18(泛型、Map集合)总结_第2页
第2页 / 共8页
day18(泛型、Map集合)总结_第3页
第3页 / 共8页
day18(泛型、Map集合)总结_第4页
第4页 / 共8页
day18(泛型、Map集合)总结_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《day18(泛型、Map集合)总结》由会员分享,可在线阅读,更多相关《day18(泛型、Map集合)总结(8页珍藏版)》请在金锄头文库上搜索。

1、Day18总结1、 泛型类:在写容器之前想要容器中要存什么?所以要先写好泛型Eg:TreeSet ts=new TreeSet();有了泛型后强制转换就没有用Eg:public class Person implements Comparator对于下面覆盖的它的compare方法就不用强制转换了。Public int compare(Person p)这里就不用在做强制转换了。实现代码:Public static void main(String args)Tool t=new Tool();t.setObject(new Cat();t.setObject(new Dog();这时编译会出

2、现没问题,但是运行时会出现错误,因为发生了类型转换异常,dog不能转换成Cat。Cat c=(Cat)t.getObject();Tool t=new Tool();t.setObject(newCat();此时就不用强转了t.setObject(new Dog():此时编译就失败,把运行时的异常转到编译时候。Class CatClass Dog/*Class ToolPrivate Object obj;Public void setObject(Object obj)This.obj=obj;Public Object getObject()Return obj;*/改进后ClassToo

3、lPrivate T t;Public void setObject(T t)This.t=t;Public T getObject()Return t;总结:这就是将泛型定义在类上,这个类称为泛型类,是一种替代Object类的一种技术,因为Object类有自动类型提升和转换,泛型已经替代它做了,编译时期更安全,省去了强转的麻烦。什么时候使用泛型类?当类中要操作的引用数据类型不确定的时候,以前使用的是共性类型Object现在可以使用泛型来解决,比Object更为安全。2、 泛型方法:既然类中的方法操作类型不确定,其实可以将泛型定义在方法上。实现代码:Tool t=new Tool2();T.s

4、how(new Integer(5);编译失败,因为类型不一致。Tool2 t1=new Tool2();这样便可以操作Integer类型的对象了。T.show();Class Tool2显示对象的打印结构,可是对象不确定,所以使用Object,而现在可以使用泛型解决。void show(W obj)Sop(obj);当静态方法的时候,如果方法是静态的是无法访问类上定义的泛型的,如果该方法还需要泛型,必须将泛型定义在方法上,Static void staticMethod(Y t)泛型定义在方法上时只能放在返回值的前面和修饰符的后面什么时候使用泛型方法?当方法操作的引用数据类型不确定的时候就使

5、用方法。3、 泛型接口:实现代码:Interface Intervoid show(T t);Class InterImpl implements InterPublic void show(String str)Sop(str);不明确的时候用上面这种,但是当我们明确了类型时候使用下面的这种情况Class InterImpl implements InterPublic void show(W w)Public static void main(String args)New InterImpl().show(hehe);4、 泛型通配符:不带泛型也是可以的,因为新的可以兼容前面的,因为泛型

6、擦除之后它还是Object注意区分T t代表某一种实现代码:Public static void main(String args)ArrayList al=new ArrayList();Al.add(new Student(lisi,21);Al.add(new Student(lisi2,22);Al.add(new Student(lisi3,23);ArrayList al2=new ArrayList();Al.add(new Student(lisiso,23);Al.add(new Student(lisiss,23);Al.add(new Student(lisisdsdf,

7、23);ArrayList al3=new ArrayList();printCollection(a1);printCollection(a2);Public static void printCollection(Collection coll)Iterator it=coll.iterator();While(it.hasNext()Student stu=it.next();Student p=it.next();Sop(p.getName()+p.age();Object obj=it.next();Sop(obj.toString();对集合中的元素进行迭代的功能,因为打印集合中的

8、元素类型是不确定的,无法明确,可以使用泛型中的通配符来完成,该通配符用?来标示,如果要对操作的类型进行限定,只操作一部分类型时,可以使用泛型的高级功能,泛型的限定。? Extends E:可以接收E类型和E的子类型。? Super:可以接收了性或者的父类型。实现代码:Public static void printCollection(Collection coll)Iterator it = coll.iterator();while(it.hasNext()/Student stu = it.next();Person p = it.next();System.out.println(p.

9、getName()+-+p.getAge();5、 什么时候使用E extends?一般在存储具体引用类型时使用这种情况,因为存储E类型或者E类型的子类,这时可以保证类型是安全的。实现代码:public static void main(String args) Collection coll = new ArrayList();coll.add(new Person(abc1,21);coll.add(new Person(abc2,22);Collection coll2 = new ArrayList();coll2.add(new Student(lisi1,31);coll2.add

10、(new Student(lisi2,32);coll2.add(new Student(lisi3,33);Collection coll3 = new ArrayList();coll3.add(new Worker(lisi11,31);coll3.add(new Worker(lisi22,32);coll.addAll(coll2);coll.addAll(coll3);Iterator it = coll.iterator();while(it.hasNext()Person stu = it.next();System.out.println(stu.getName();6、 泛

11、型下限:下限什么时候用?从集合中取出对象进行操作时,可以使用下限。比如:比较器。无论集合中的元素对象的类型是什么,只要比较器的指定的类型可以接受这些对象完成比较,就可以了。所以比较器的类型,可以是集合中当前元素的类型,也是可以该元素类型的父类型。实现代码:public static void main(String args) TreeSet ts = new TreeSet(new ComparatorName();ts.add(new Student(lisi1,21);ts.add(new Student(lisi2,28);ts.add(new Student(lisi9,23);ts

12、.add(new Student(lisi7,27);TreeSet ts2 = new TreeSet(new ComparatorName();ts2.add(new Worker(lisi11,41);ts2.add(new Worker(lisi22,48);ts2.add(new Worker(lisi99,43);ts2.add(new Worker(lisi77,47);printCollection(ts);printCollection(ts2);/ArrayList al = new ArrayList();/ArrayList al2 = new ArrayList();/al.containsAll(al2);/abc.equals(8);/* * param ts2 */public static void printCollection(TreeSet ts2) Iterator it = ts2.iterator();while(it.hasNext()Person p = it.next();System.out.println(p.getName()+:+p.getAge();class ComparatorName implements ComparatorOverridepublic int compare(Person o1, Person

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号