




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第07章_容器 听课笔记 2009-12-21 20:43 by LoveXForce第七章. 容器11361图API类图结构图1类Collection类3知识点For Generic(泛型) Auto Boxing and Unboxing6接口 Collection Set List Map Iterator Comparable1. 容器java API 所提供的一系列类的实例,用于在程序中存放对象J2SDK所提供的容器API位于util包内容器API的类图结构如图: 容器API1. Collection接口(一个一个的装):定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式Set中的数据对象没有顺序并且不可以重复。(两对象互相equals相等则重复)List中的数据对象有顺序并且可以重复。2. Map接口(一对一对的装):定义了存储“键(key) 值(value)映射对”的方法2. Collection接口Collection接口中所定义的方法:例举1 2009-12-21 20:49:57-2010-3-28 13:10:54例举2 02_Collection_2.avi container BasicContainer.java9import java.util.*;public class BasicContainer public static void main(String args) Collection c = new HashSet(); c.add(hello); c.add(new Name(f1,l1); c.add(new Integer(100); c.remove(hello); /如果equals则去除 c.remove(new Integer(100); System.out.println (c.remove(new Name(f1,l1); System.out.println(c); class Name implements Comparable private String firstName,lastName; public Name(String firstName, String lastName) this.firstName = firstName; this.lastName = lastName; public String getFirstName() return firstName; public String getLastName() return lastName; public String toString() return firstName + + lastName; /重写equals方法 public boolean equals(Object obj) if (obj instanceof Name) Name name = (Name) obj; return (firstName.equals(name.firstName) & (lastName.equals(name.lastName); return super.equals(obj);public int hashCode() return firstName.hashCode();public int compareTo(Object o) Name n = (Name)o; int lastCmp = lastNpareTo(n.lastName); return (lastCmp!=0 ? lastCmp : firstNpareTo(n.firstName); 注意:重写equals方法必须重新hashCode方法 当一个类的某个对象当做索引,会使用hashcode方法 public boolean equals(Object obj) if (obj instanceof Name) Name name = (Name) obj; return (firstName.equals(name.firstName) & (lastName.equals(name.lastName); return super.equals(obj);public int hashCode() return firstName.hashCode();3. Iterator接口 (方便遍历) 相当于指针、游标,每一种容器有自己的Iterator接口例举注意:Iterator对象的remove方法是在迭代过程中删除元素的唯一安全方法2010-3-28 14:44:34 - 2010-3-28 20:32:23知识点1:JDK1.5增强For循环4. Set接口Set接口是Collection的子接口,Set接口没有提供额外的方法,但实现Set接口的容器类中的元素是没有顺序的,且不可重复。Set容器可以与数学中”集合”的概念想对应。J2SDK API中所提供的Set 容器类有HashSet,TreeSet等。5. List接口 类似数组(大小自动增加)List接口是Collection的子接口,实现List接口的容器类中的元素是有顺序的,而且可以重复。List容器的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器总的元素。J2SDK所提供的List容器类有ArrayList,LinkedList等。例举List常用算法:类Java.util.Collections提供了一些静态方法实现了机遇List容器的一些常用算法。void sort(List) 对List容器内的元素排序void shuffle(List) 对List容器内的对象进行随机排序void reverse(List) 对List容器内的对象进行逆序排序void fill(List, object) 用一个特定的对象重写整个List容器void copy(List dest , List src)将src List容器内容拷贝到dest List容器int binarySearch(List , Object)对于顺序的List容器,采用二分搜索法查找特定对象例举6. Comparable 接口 2010-3-30 13:29:46实现了这个接口的类,他们之间的对象可以互相比较大小。如何选择数据结构衡量标准:读的效率和改的效率Array读快改慢Linked改快读慢Hash两者之间7. Map接口实现Map接口的类用来存储键-值 对Msp接口的实现类有HashMap和TreeMap等Map类中存储的键-值对通过键来标识,所以键值不能重复Object put (Object key , Object value); /将key的值改为value(如果存在key),并将对象返回Object put (Object key); /通过key 找到value对象Object remove(Object key); /把key对应的value去掉boolean containsKey(Object key); /是不是包含keyboolean containsValue(Object value); /是不是包含valueint size(); /装了多少对对象boolean isEmpty(); /是不是空的void putAll(Map t); /把另外一个Map里面的东西全部加进来void clear(); /清除知识点2:自动打包解包 (jdk1.5以后) Auto Boxing and Unboxing打包:自动将基础类型转换为对象解包:自动将对象转换为基础类型例如:ContainerTestMap.java import java.util.*;public class TestMap public static void main(String args) Map m1 = new HashMap(); Map m2 = new TreeMap(); /m1.put(one,new Integer(1); m1.put(one, 1); /m1.put(two,new Integer(2); m1.put(two, 2); /m1.put(three,new Integer(3); m1.put(three, 3); /m2.put(A,new Integer(1); m2.put(A, 1); /m2.put(B,new Integer(2); m2.put(B, 2); System.out.println(m1.size(); System.out.println(m1.containsKey(one); System.out.println /(m2.containsValue(new Integer(1); (m2.containsValue(1); if(m1.containsKey(two) /int i = (Integer)m1.get(two).intValue(); int i = (Integer)m1.get(two);/系统不知道是否能转换为Integer型,但是手动转换为Integer型后系统自动解包为相对应的值 System.out.println(i); Map m3 = new HashMap(m1); m3.putAll(m2); System.out.println(m3); 练习1 containerTestArgsWords.java 显示每个单词重复个数!import java.util.*;public class TestArgsWords /private static final Integer ONE = new Integer(1); private static final int ONE = 1; public static void main(String args) Map m = new HashMap(); for (int i = 0; i args.length; i+) /Integer freq = (Integer) m.get(argsi); int freq = (Integer) m.get(argsi) = null ? 0 : (Integer) m.get(argsi);/第一次为空值不能转换类型,需要这样写 /m.put(argsi,(freq = null? ONE : new Integer(Value() + 1); m.put(argsi, freq=0 ? ONE : freq + 1); System.out.println (m.size() + distinct words detected:); System.out.println(m); 知识点3 Generic泛型 jdk1.5 指定特定类型ArrayList (当然是在能指定的情况下)起因:jdk1.4以前的类型不明确:装入集合的类型都被当做Object对待,从而失去自己的实际类型。从集合中取出时往往需要转换类型,效率低,容易产生错误。解决办法:在定义集合的时候同时定义集合中对象的类型例如:BasicGeneric.java可以在定义Collection的时候指定也可以在循环时使用Iterator指定好处:增强程序的可读性和稳定性如API 中有ArrayList 则说明可以指定特定类型例举 container BasicGeneric.java import java.util.*;public class BasicGeneric public static void main(String args) List c = new ArrayList(); /只能装Sring类型 泛型的使用c.add(aaa);c.add(bbb);c.add(ccc);for(int i=0; ic.size(); i+) /遍历String s = c.get(i);System.out.println(s);Collection c2 = new HashSet();c2.add(aaa); c2.add(bbb); c2.add(ccc);for(Iterator it = c2.iterator(); it.hasNext(); ) String s = it.next();System.out.println(s);class MyName implements Comparable int age;public int compareTo(MyName mn) if(this.age mn.age) return 1;else if(this.age mn.age) return -1;else return 0;将前面讲的修改为泛型TestMap2.java import java.util.*;public class TestMap2 public static void main(String args) Map m1 = new HashMap(); m1.put(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自主融入集体活动方案
- 河源餐饮考试题及答案
- 轮胎素质拓展活动方案
- 岗位要求考试题及答案
- 公司按时交付工期承诺书6篇范文
- 肺脏评估考试题及答案
- (正式版)DB1501∕T 0011-2020 《养老机构社会工作服务规范》
- (正式版)DB15∕T 3404.2-2024 《全民所有自然资源资产清查技术指南 第2部分:矿产资源》
- 农业综合开发项目建设与管理责任书
- 致力于提升效率效果服务承诺书(8篇)
- 2025年中国盐业集团有限公司所属企业招聘笔试冲刺题(带答案解析)
- 天车设备安全管理制度
- 卫生系统及其功能
- 水运工程港口航道课件
- 小肠憩室的临床护理
- 浙江隆宸现代农业科技有限公司年产4500吨双孢蘑菇技改项目环评报告
- 迪士尼人力资源管理
- 消毒供应中心安全警示教育
- 餐饮食堂消防安全培训
- 肿瘤病人发烧护理常规
- 形式与政策:第1课 国际形势的回顾与展望
评论
0/150
提交评论