编写字符界面应用(中).ppt

上传人:wuy****n92 文档编号:88411962 上传时间:2023-04-26 格式:PPT 页数:27 大小:250.99KB
返回 下载 相关 举报
编写字符界面应用(中).ppt_第1页
第1页 / 共27页
编写字符界面应用(中).ppt_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《编写字符界面应用(中).ppt》由会员分享,可在线阅读,更多相关《编写字符界面应用(中).ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Softeem Consultancy Service编写字符界面应用(中)编写字符界面应用(中)ID:SCSJ001-Java Basic SyntaxSofteem Consultancy Service 集合框架体系结构Softeem Consultancy Service2023/4/20Java集合类(下)3Collection接口Collection API提供“集合”的功能Collection API包含下述接口Colection:将一组对象以集合元素的形式组织到一起,在其子接口中分别实现不同的组织方式Set:Collection的子接口,不记录元素的保存顺序,且不允许有重复元素

2、List:Collection的子接口,记录元素的保存顺序,且允许有重复元素Softeem Consultancy Service2023/4/20Java集合类(下)4Collections(集合)(集合)API一个collection(集合)是用一个对象来代表一组对象,其中的每个对象作为collection的一个元素。在Collection API中,代表对象集合的接口有:Collection 抽象的集合Set Collection的子接口,一个无序无重复集List Collection的子接口,一个有序可重复集Softeem Consultancy Service2023/4/20Jav

3、a集合类(下)5Collection 层次结构层次结构Collection+add(element:Object):boolean+remove(element:Object):boolean+size():boolean+isEmpty():boolean+contains(element:Object):boolean+iterator():IteratorSetHashSetListArrayListVectorSofteem Consultancy Service2023/4/20Java集合类(下)6数组列表数组列表ArrayList在编程中常常会遇到需要动态操纵数组,比如在运行时增

4、加和删除数组元素,而且有时在编译时又不想确定数组大小希望它可以动态伸缩,在java中解决这一问题的方法是使用java.util包中的ArrayList类 ArrayList是List接口的一个可变长数组实现。Softeem Consultancy Service2023/4/20Java集合类(下)7数组列表数组列表ArrayListpublic int size();/返回列表中的元素个数public Object get(int index);/返回指定位置的元素public void set(int index,Object obj);/设置指定位置元素public void add(O

5、bject obj);/在列表末尾增加元素public void add(int index,Object obj);/在列表指定位置插入元素public void clear();/删除列表中所有元素public void remove(int index);/删除列表中指定位置元素元素public void contains(Object obj);/判断列表中指定对象是否存在Softeem Consultancy Service2023/4/20Java集合类(下)8ArrayList示例(示例(ArrayListExample)public class ArrayListExample

6、 public static void main(String args)ArrayList al=new ArrayList();/Create a new ArrayListfor(int i=0;i10;i+)al.add(new Integer(i);/Add Items to the array list for(int i=0;ial.size();i+)System.out.println(i+=+al.get(i);al.remove(5);al.set(5,new Integer(66);for(Iterator i=al.iterator();i.hasNext();)In

7、teger integer=(Integer)i.next();System.out.println(integer);Softeem Consultancy Service2023/4/20Java集合类(下)9Set 接口接口(例:例:SetTest)Set 接口继承 Collection 接口,而且它不允许集合中存在重复项,每个具体的 Set 实现类依赖添加的对象的 equals()方法来检查独一性。Set接口没有引入新方法,所以Set就是一个Collection,只不过其行为不同。Softeem Consultancy Service2023/4/20Java集合类(下)10Set 接

8、口接口(例:例:SetTest)HashSet h=new HashSet();h.add(1st);h.add(2nd);h.add(new Integer(3);h.add(new Double(4.0);h.add(2nd);/重复元素,未被加入h.add(new Integer(3);/重复元素,未被加入Softeem Consultancy Service2023/4/20Java集合类(下)11HashSetHashSet扩展AbstractSet并且实现Set接口。它创建一个类集,该类集使用散列表进行存储。散列表通过使用称之为散列法的机制来存储信息。在散列(hashing)中,一

9、个关键字的信息内容被用来确定唯一的一个值,称为散列码(hashcode)。而散列码被用来当做与关键字相连的数据的存储下标。关键字到其散列码的转换是自动执行的?你看不到散列码本身。你的程序代码也不能直接索引散列表。散列法的优点在于即使对于大的集合,它允许一些基本操作如add(),contains(),remove()和size()方法的运行,时间保持不变。Softeem Consultancy Service2023/4/20Java集合类(下)12HashSetHashSet()构造一个默认的散列集合HashSet(Collection c)用c中的元素初始化散列集合HashSet(int c

10、apacity)用capacity初始化散列集合的容量HashSet(int capacity,float fillRatio)第四种形式用它的参数初始化散列集合的容量和填充比(也称为加载容量)。填充比必须介于0.0与1.0之间,它决定在散列集合向上调整大小之前,有多少能被充满。具体的说,就是当元素的个数大于散列集合容量乘以它的填充比时,散列集合被扩大。对于没有获得填充比的构造函数,默认使用0.75.Softeem Consultancy Service2023/4/20Java集合类(下)13HashSet(例:例:HashSetDemo)HashSet没有定义任何超过它的超类和接口提供的其

11、他方法。重要的是,注意散列集合并没有确保其元素的顺序,因为散列法的处理通常不让自己参与创建排序集合。如果需要排序存储,另一种类集TreeSet将是一个更好的选择。下面是该程序的输出:A,F,E,D,C,B如上面解释的那样,元素并没有按顺序进行存储。Softeem Consultancy Service2023/4/20Java集合类(下)14Iterator接口接口Iterator接口定义了对Collection类型对象中所含元素的遍历等增强处理功能可以通过Collection接口中定义的iterator()方法获得一个对应的Iterator(实现类)对象Set(实现类)对象对应的Iterat

12、or仍然是无序的List(实现类)对象对应的ListIterator对象可以实现对所含元素的双向遍历:使用next()方法和previous()方法Softeem Consultancy Service2023/4/20Java集合类(下)15Iterator接口层次接口层次Iterator+hasNext():boolean+next():boolean+remove()ListIterator+hasPrevious():boolean+previous():Object+add(element:Object)+set(element :Object)Softeem Consultancy

13、 Service2023/4/20Java集合类(下)16Iterator接口接口void add(Object obj)将obj插入列表中的一个元素之后,该元素在下一次调用next()方法时,被返回boolean hasNext()如果存在更多的元素,则返回true,否则返回falseObject next()返回下一个元素。如果没有下一个元素,则引发NoSuchElementException异常void remove()删除当前元素,如果试图在调用next()方法之后,调用remove()方法,则引发IllegalStateException异常Softeem Consultancy S

14、ervice2023/4/20Java集合类(下)17Iterator接口接口hasPrevious()如果存在前一个元素,则返回true;否则返回falseint nextIndex()返回下一个元素的下标,如果不存在下一个元素,则返回列表的大小Object previous()返回前一个元素,如果前一个元素不存在,则引发一个NoSuchElementException异常int previousIndex()返回前一个元素的下标,如果前一个元素不存在,则返回-1void set(Object obj)将obj赋给当前元素。这是上一次调用next()方法或previous()方法最后返回的元

15、素Softeem Consultancy Service2023/4/20Java集合类(下)18Iterator接口(例:接口(例:IteratorDemo)在通过迭代函数访问类集之前,必须得到一个迭代函数。每一个Collection类都提供一个iterator()函数,该函数返回一个对类集头的迭代函数。通过使用这个迭代函数对象,可以访问类集中的每一个元素,一次一个元素。通常,使用迭代函数循环通过类集的内容,步骤如下:Softeem Consultancy Service2023/4/20Java集合类(下)19Iterator接口(例:接口(例:IteratorDemo)1.通过调用类集的

16、iterator()方法获得对类集头的迭代函数。2.建立一个调用hasNext()方法的循环,只要hasNext()返回true,就进行循环迭代。3.在循环内部,通过调用next()方法来得到每一个元素。对于执行List的类集,也可以通过调用ListIterator来获得迭代函数。正如上面解释的那样,列表迭代函数提供了前向或后向访问类集的能力,并可让你修改元素。否则,ListIterator如同Iterator功能一样。Softeem Consultancy Service2023/4/20Java集合类(下)20Iterator接口接口程序的输出如下所示:Original contents

17、of al:C A E B D FModified contents of al:C+A+E+B+D+F+Modified list backwards:F+D+B+E+A+C+特别值得注意的是:列表是如何被反向显示的。在列表被修改之后,litr指向列表的末端(记住,当到达列表末端时,litr.hasNext()方法返回false)。为了以反向遍历列表,程序继续使用litr,但这一次,程序检测它是否有前一个元素。只要它有前一个元素,该元素就被获得并被显示出来。Softeem Consultancy Service2023/4/20Java集合类(下)21映射(映射(map)映射(map)是一个

18、存储关键字和值的关联或者说是关键字/值对的对象。给定一个关键字,可以得到它的值。关键字和值都是对象。关键字必须是唯一的。但值是可以被复制的。有些映射可以接收null关键字和null值。而有的则不行。Softeem Consultancy Service2023/4/20Java集合类(下)22HashMapHashMap类使用散列表实现Map接口。这允许一些基本操作如get()和put()的运行时间保持恒定,即便对大型集合,也是这样的。HashMap()构造一个默认的散列映射HashMap(Map m)用m的元素初始化散列映射HashMap(int capacity)将散列映射的容量初始化为c

19、apacityHashMap(int capacity,float fillRatio)用它的参数同时初始化散列映射的容量和填充比。容量和填充比的含义与前面介绍的HashSet中的容量和填充比相同。Softeem Consultancy Service2023/4/20Java集合类(下)23 HashSet 和和 HashMapHashMap可以看作三个视图:key的Set,value的Collection,Entry的Set。这里HashSet就是其实就是HashMap的一个视图。HashSet内部就是使用Hashmap实现的,和Hashmap不同的是它不需要Key和Value两个值。往h

20、ashset中插入对象其实只不过是内部做了public boolean add(Object o)return map.put(o,PRESENT)=null;HashMap为散列映射,它是基于hash table的一个实现,它可在常量时间内安插元素,或找出一组key-value pair.HashSet为散列集,它把查找时间看的很重要,其中所有元素必须要有hashCode()Softeem Consultancy Service2023/4/20Java集合类(下)24HashTable 与与 HashMapHashTable不允许null值(key和value都不可以),HashMap允许

21、null值(key和value都可以)。HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。HashTable使用Enumeration,HashMap使用Iterator。Softeem Consultancy Service2023/4/20Java集合类(下)25泛型泛型 编译类型编译类型public interface Set extends Colle

22、ctionpublic interface List extends Collectionpublic class ArrayListextends AbstractList implements List,RandomAccess,Cloneable,Serializablepublic interface Map public class HashMap extends AbstractMap implements Map,Cloneable,SerializableSofteem Consultancy Service2023/4/20Java集合类(下)26掌握重点掌握重点Java数组

23、有什么特点数组列表和数组有什么不同Collection接口及其实现类HashMap,HashSet,HashTableSofteem Consultancy Service2023/4/20Java集合类(下)27课后练习课后练习1.遍历一个文件夹,将文件夹下所有的文件,目录,以及子目录下的文件,目录找出,并存储在List中.(提示:用递归算法)2.将某班所有的学生对象保存到List中,并遍历打印输出;3.将某班所有的学生对象保存到Map中,并遍历打印输出;4.将某班所有的学生对象保存到Map中,按名字取出学生对象.5.将JDK系统的属性按key,value保存到一个Hashmap中;6.说明HashMap和HashTable的区别.

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

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁