




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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();这时编译会出现没问题,但是运行时会出现错误,因为发生了类型转换异常,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;*/改进后ClassToolPrivate 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.show(new Integer(5);编译失败,因为类型不一致。Tool2 t1=new Tool2();这样便可以操作Integer类型的对象了。T.show();Class Tool2显示对象的打印结构,可是对象不确定,所以使用Object,而现在可以使用泛型解决。void show(W obj)Sop(obj);当静态方法的时候,如果方法是静态的是无法访问类上定义的泛型的,如果该方法还需要泛型,必须将泛型定义在方法上,Static void staticMethod(Y t)泛型定义在方法上时只能放在返回值的前面和修饰符的后面什么时候使用泛型方法?当方法操作的引用数据类型不确定的时候就使用方法。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、 泛型通配符:不带泛型也是可以的,因为新的可以兼容前面的,因为泛型擦除之后它还是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,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();对集合中的元素进行迭代的功能,因为打印集合中的元素类型是不确定的,无法明确,可以使用泛型中的通配符来完成,该通配符用?来标示,如果要对操作的类型进行限定,只操作一部分类型时,可以使用泛型的高级功能,泛型的限定。? 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.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(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、 泛型下限:下限什么时候用?从集合中取出对象进行操作时,可以使用下限。比如:比较器。无论集合中的元素对象的类型是什么,只要比较器的指定的类型可以接受这些对象完成比较,就可以了。所以比较器的类型,可以是集合中当前元素的类型,也是可以该元素类型的父类型。实现代码: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.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 o2) /Person o1 = new Student(lisi1,21)int temp = o1.getName().compareTo(o2.getName();return temp=0?o1.getAge()-o2.getAge():temp;/*class ComparatorName implements ComparatorOverridepublic int compare(Student o1, Student o2) int temp = o1.getName().compareTo(o2.getName();return temp=0?o1.getAge()-o2.getAge():temp;class ComparatorName2 implements ComparatorOverridepublic int compare(Worker o1, Worker o2) int temp = o1.getName().compareTo(o2.getName();return temp=0?o1.getAge()-o2.getAge():temp;*/*Collection coll = new ArrayList();TreeSet ts = new TreeSet(coll);class TreeSetTreeSet()TreeSet(Collection coll)下限什么时候用?从集合中取出对象进行操作时,可以使用下限。比如:比较器。无论集合中的元素对象的类型是什么,只要比较器的指定的类型可以接受这些对象完成比较,就可以了。所以比较器的类型,可以是集合中当前元素的类型,也是可以该元素类型的父类型。TreeSet(Comparator comp)7、 Map集合:特点:1、 它是集合框架中的顶层。2、 它一次存储一对元素,一个叫键,一个叫值,也就是键值对。Collection一次存一个,称为单列集合。Map一次存一对,称为双列集合。3、 map集合中必须保证键的唯一性。4、 如果存储键值对时,键出现重复,新值覆盖旧值,其实map集合存储的是映射关系。8、 Map常见的方法:该集合存储的键值对,一对一对的往里存,而且要保证键的唯一性。1、添加:put(key,value);putAll()2、删除:clear();remove(key);根据键来删,因为键唯一。3、判断:containKey():containVlaue();isEmpty();4、获取:get(Object key);size();获取长度。values();获取所有的值。张三对的北京人,李四对应上海人。所以要把所有的值都获取,看。entrySet();将map集合中的映射关系map.Entry其实Entry也是一个接口,它是map接口中的一个内部接口。Interface Mappublic static interface Entrypublic abstract Object getKey();public abstract Object getValue();keySet();将map中所有的键都存入了set集合,因为set具备迭代器,所以可以迭代方式取出所有的键,在根据get方法获取每一个键对应的值。Map集合的取出原理:将map集合转成set集合,在通过迭代器取出以上两个知识点:有什么特点?什么时候用?怎么用?晚上回家查资料?预习2、Map|-Hashtable:低层是哈希表数据结构,不可以存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 灯具店灯饰知识培训课件
- 灯丝灯知识培训课件
- 滴墨课件教学课件
- 重难点解析人教版八年级上册物理《物态变化》专题训练试题(含答案及解析)
- 考点攻克人教版九年级物理《电流和电路》单元测评试卷(含答案详解版)
- 港口设施基础知识培训课件
- 出租挂从业考试卷及答案解析
- 中医护理常考题库及答案解析
- 电子大厦安全性测试题及答案解析
- 银行专业从业资格考试及答案解析
- 股权质押合同范本及股权质押期限约定
- 2025年放射工作人员放射防护培训考试题及答案
- 2024年发展对象培训结业考试真题
- 渔民补贴资金管理办法
- 顺丰快递物流模式的优势分析
- 安全用药相关管理制度
- 船员培训体系与技能提升研究-洞察阐释
- 学校工作行事历表
- 中医面瘫个案
- 健康素养促进培训课件
- 短视频时代的注意力碎片化-洞察及研究
评论
0/150
提交评论