




已阅读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年生化期末题库及答案护理
- 2025年白内障专科护理知识题库及答案
- 2025年中医内科护理学试题库及答案
- 宠物店新知识培训内容课件
- Unit 6 写作教学设计 沪教版英语七年级上册
- 氯水的课件教学课件
- 广东省廉江市实验学校高中政治 3.2 树立正确的消费观2说课稿(必修1)
- 新能源汽车维修工程 课件 第七章 空调系统检测与维修
- 疫情知识宣传培训记录课件
- 涮火锅课件教学课件
- 2025年长春吉润净月医院社会招聘模拟试卷(含答案详解)
- 2025年下半年宝山区国有企业员工招聘笔试备考试题及答案解析
- 2024-2025学年广东省深圳市梅山中学九年级上学期开学考英语试题及答案
- 2025年贵州省遵义市辅警招聘考试题题库(含参考答案)
- 2025年国网宁夏电力有限公司高校毕业生提前批招聘校园宣讲安排笔试参考题库附带答案详解
- 2025年哈尔滨呼兰区招聘禁毒协管员30人考试参考试题及答案解析
- 2025初级注册安全工程师题库合集(+答案)
- 2025年武汉东西湖分局招聘警务辅助人员招聘73人考试参考试题及答案解析
- 小学数学人教版(2024)三年级上第三单元毫米、分米和千米测试卷(含答案)
- 池黄高铁安全培训课件
- 单相光伏并网反激式微逆变器:拓扑结构、控制策略与性能优化研究
评论
0/150
提交评论