




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
教学目标,了解集合框架的接口以及实现类。 掌握ArrayList、Vector以及HashMap等常见集合实现类的用法。 了解如何利用泛型存取数据。,集合,集合:类似于数组,是存放对象的聚集。集合对象中存放的是一组对象。换句话说,集合中的存放的元素是对象。,集合中接口决定了集合API中各个类的基本特性。具体类仅仅是提供了标准接口的不同实现。 集合API中的接口和类主要位于java.util包中; 最基本的接口是Collection接口,该接口定义了操作数据的基本方法.,位于集合框架层次结构顶层的 Collection接口是集合框架的基础,它声明了所有集合类都有的核心方法。Collection接口有2个直接扩展的子接口:List和Set。,不按顺序保存元素,不可重复,按顺序保存元素,可重复,集合框架中的实现类,Collection接口重要的方法有: public boolean add(Object obj); /将对象obj加入到当前集合对象中 public boolean addAll(Collection c); /将集合c中的元素加入到当前集合对象中 public void clear(); /清除当前集合中的所有元素 public boolean contains(Object obj); /判断当前集合中是否包含obj对象 public Iterator iterator(); /得到当前集合的迭代器,public boolean remove(Object obj); /删除当前集合中的obj对象 public int size(); /得到当前集合中元素的总数 public boolean isEmpty(); /判断当前集合是否为空 public Object toArray(); /将当前集合对象转化成对象数组 注意: 集合类中的许多方法的参数都是Object类型。,Set接口,Set中的元素必须唯一。不允许有重复的元素。不重复是指集合中任意2个对象x和y,x.equals(y)始终为false。,实现了Set接口的类主要有: AbstractSet:所有Set的实现类都直接或者间接继承AbstractSet父类。 HashSet:内部使用一个哈希表来实现Set集合,并允许存放null元素。不保证元素的排列顺序,顺序有可能发生变化。在编程中常常使用该类。 LinkedHashSet:既有 HashSet 的查询速度,又能保存元素被加进去的顺序去(插入顺序)。,HashSet,HashSet的构造函数如下: HashSet( ) /构造一个空 set。 HashSet(Collection c) /构造一个包含指定 collection 中的元素的新 set。 例:SetDemo.java,注意: 输出结果中集合里的元素没有按照顺序排序。既没有按照输入顺序,也没有按照自然顺序。 输出结果中没有重复元素。如字符串3就没有重复的。但是1有重复的,原因是这里的1是2个对象,字符串型的和基本数据类型的包装类Integer类型的。 基本数据类型要插入进去需要使用我们上节课介绍的基本数据类型的包装类。,向上转型的好处:如果以后我们不用HashSet,改用LinkedHashSet或其他,那么我们只需要将如下语句: Set set=new HashSet(); 改为: Set set=new LinkedHashSet(); 实现改变了,编程改动的工作量较小。应当培养这种良好的面向对象的编程习惯。,Set接口有一个子接口SortedSet,SortedSet中的元素可以保证处于排序状态,一个直接应用类TreeSet。 例:treesetDemo.java,List接口,List接口定义了一个有序的对象集合,允许重复元素存在。 List类似于动态数组或变长数组。List中存放的元素的数量(List的容量)可以随着插入操作自动进行调整。,除了从Collection接口中继承的方法外,List接口新增了如下一些方法: public void add(int index,Object obj);/在当前List中的index位置插入obj对象 public boolean addAll(int index,Colletion c);/将集合c中的全部元素添加到从index开始往后的当前集合中 public Object set(int index,Object obj);/将index指示的位置的元素用obj替换 public Object get(int index);/返回index位置的元素 public Object remove(int index);/删除index位置的元素,public int indexOf(Object o);/返回o在List中的第一次出现的位置,List中o不存在返回-1 public int lastIndexOf(Object o);/返回o在List中最后一次出现的位置, List中o不存在返回-1 public List subList(int fromIndex,int toIndex);/得到一个从fromIndex开始到toIndex处(不含此处)的当前List的一个子集 public ListIterator listIterator();/返回列表中元素的列表迭代器(以正确的顺序) public ListIterator listIterator(int index);/从列表的指定位置index开始,返回列表中元素的列表迭代器(以正确的顺序),实现了List接口的2个类:ArrayList和Vector类,在实际中经常使用。 例:ListDemo.java 注意: 放入的顺序=出来的顺序 可存放重复类型的对象 remove()方法可删除某位置的对象,也可删除某一个对象。,Iterator接口,Iterator接口主要用来遍历集合中的元素。 在实际应用中只要用到Collection接口的类都会用到iterator这个接口,所有实现Collection接口的类都有一个iterator()方法,用来返回一个实现Iterator接口的对象。 作用是对Collection的元素进行遍历等操作 只能单向移动。,有3个主要方法: public boolean hasNext();/判断集合中是否还有元素 public Object next();/得到下一个元素 public void remove();/从集合中删除当前元素,例:IteratorDemo.java ListIterator接口是Iterator接口的子接口,它针对List集合有序的特点,提供了双向检索和元素存取的功能。,主要方法有: public boolean hasPrevious();/如果以反向遍历列表,列表迭代器有多个元素,则返回 true public Object previous();/返回列表中的前一个元素 public void add(Object o);/将指定的元素插入列表(在当前位置插入) public void set(Object o);/用指定元素替换 next 或 previous 返回的最后一个元素(可选操作) 例: ListIteratorDemo.java,遍历集合的方法,数组遍历 void enumerate(Collection list) for(int i=0;ilist.size();i+) Object o=list.get(i); ,遍历集合的方法,迭代器遍历(所有实现了Iterable接口的集合类) Iterator it=list.iterator(); while(it.hasNext() System.out.println(it.next(); ,判断该迭代器中是否还有元素需要迭代,返回true或false,返回迭代的下一个元素,指针下移,for-each形式 所有利用迭代器迭代的元素都可以用for-each形式。 for(Object ob:list) System.out.println(ob); ,从哪个集合对象中取元素,形参名,形参数据类型,Map接口,Collection接口表示的是单一对象的集合;即每个位置保存的是单一的对象 Map中保存关键字-值这种形式的对象。,关键字,值,身份证号,简介信息,国家的英文,国家的中文,方法: public Set keySet(); /返回此映射中包含的键的 set 视图 public Colletion values(); /返回此映射中包含的值的 collection 视图 public Set entrySet(); /返回此映射中包含的映射关系的 set 视图 ,即返回的Set中包含了Map中所有的关键字-值对,Map中 还定义了对Map数据集合的操作方法: public void clear();/清空整个集合 public Object get(Object obj);/根据关键字obj得到对应的值 public Object put(Object key, Object value);/将键-值对加入到当前的Map中 public void remove(Object key );/从当前Map中删除key代表的键-值对,实现了Map接口的类中常用的是HashMap和HashTable HashTable是线程访问安全的 HashTable的子类Properties: Properties的关键字和值只能是String; Properties经常用来读取配置信息。,HashMap:实现Map接口,存储键/值映射关系,不能保证其元素的存储顺序,即不保证放入与取出的顺序一致。,HashMap,此类的构造方法包括: 它在存放键/值时允许值为null 值,示例: MapDemo.java StudentMapDemo.java,泛型,泛型:编译期用来检查输入集合中数据的类型,从而避免操作时强制类型转换。 例如: List ls=new ArrayList(); ls.add(“a1”); ls.add(2);/报错 /取元素时不用再强制类型转换,因为强制类型转换会出错 for(String str:ls) System.out.println(str); Iterator it=ls.iterator(); while(it.hasNext() System.out.println(it.next().getName(); ,从ls中取元素付给形参str,Hashmap中也可使用泛型 Map mp=new HashMap(); Set set=mp.k
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 33682-2025基质辅助激光解吸电离飞行时间质谱鉴别微生物方法通则
- 2025年他山之石理论考试卷及答案
- 2025年图书情报专业研究生入学考试卷及答案
- TCO-PEG4-maleimide-生命科学试剂-MCE
- Rotigaptide-Standard-ZP123-Standard-生命科学试剂-MCE
- Azido-PEG1-hydrazide-hydrochloride-生命科学试剂-MCE
- 2025年企业质量管理体系考试试题及答案
- 2025年进出口贸易资格考试试题及答案
- 2025年化学专业考试试卷及答案
- 2025年高考理科综合历年试卷及答案
- 煤炭运输合同
- 深圳市建筑小区及市政排水管网设计和施工技术指引
- 非遗项目计划书模板范文
- 视频监控维保项目投标方案(技术方案)
- T-HNNJ 0004-2021 水稻机械化收割技术规程
- 2024年黑龙江省哈尔滨市中考数学试卷(附答案)
- 兽医实验室质量管理手册
- 体温测量护理
- 全省公安特巡警安检排爆实训参考题库多选题附有答案
- 国际经济合作(-第二版)思考题和知识点运用习题答案
- 江苏省常州市溧阳市2023-2024学年八年级下学期期末道德与法治试题(含答案解析)
评论
0/150
提交评论