《2022年web服务器 .pdf》由会员分享,可在线阅读,更多相关《2022年web服务器 .pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、蓝杰 java讲习录只为不凡而来!1 第三节: java集合框架目标:1.明确 java 常用集合的继承体系;2.熟练使用Set,List,Map 接口的实现类。1.集合框架总体结构.2 2.Set 接口和 List 接口 .2 3.java.util.Set 接口实现类的用法:.3 4.java.util.List 接口的用法 .4 5.java.util.Map 接口应用: .5 总结和任务:.7名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - -
2、- - - - - 蓝杰 java讲习录只为不凡而来!2 1.集合框架总体结构Java 中集合类定义主要是java.util.*包下面,常用的集合在系统中定义了三大接口,这三类的区别是:java.util.Set接口及其子类,set 提供的是一个无序的集合;java.util.List接口及其子类,List提供的是一个有序的集合;java.util.Map接口及其子类,Map提供了一个映射(对应)关系的集合数据结构;另外,在JDK5 中新增了Queue(队列 )接口及其子类,提供了基于队列的集合体系。每种集合, 都可以理解为用来在内存中存放一组对象的某种”容器“- 就像数组, 就像前面我们自己
3、定义的队列。2.Set 接口和 List 接口Set 是最简单的一种集合,它的对象不按特定方式排序,只是简单的把对象加入集合中,就像往口袋里放东西。对集中成员的访问和操作是通过集中对象的引用进行的,所以集中不能有重复对象; 而 LIst的主要特征是其对象以线性方式存储,没有特定顺序,只有一个开头和一个结尾,当然,它与根本没有顺序的集是不同的。列表在数据结构中分别表现为:数组和向量、链表、堆栈、队列。关于实现列表的集合类,是我们日常工作中经常用到的;从类图中可以看到, Set 和 List都是继承了Collection接口的子接口,而这类集合都有自己的实现;在 Collection是 Set 、
4、List 、Queue的顶层接口, 这个接口中定义了如下主要方法,这些方法在 Set 或 List的实现类中都可以直接使用: booleanadd(E o) : 向集合中加入一个对象,如果集中己有这个对象,则返回false ; booleanaddAll(Collection c) 将另外一个集合中的所有对象加入这个集合 voidclear() 清除集合中的所有对象, 执行过后,集合中不在装有对象booleancontains(Object o) 判断集合是是否存在某个对象booleancontainsAll(Collection c) 判断集合中是否全部存在另外一个集合中的对象boolean
5、equals(Object o)inthashCode() 可重写的来自父类的方法booleanisEmpty() 判断集合是否为空,在执行clear()后调用这个方法,返回true Iteratoriterator() 得到这个集合的一个迭代对象booleanremove(Object o) 从集合中移除掉一个对象 intsize()返回集合内元素的个数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 蓝杰 java讲习录只为不
6、凡而来!3 ObjecttoArray() 将集合转变一个数组对象集合类全部都支持泛型定义,一般我们在定义一个集合对象时,都会指定其可放入对象的类型。3.java.util.Set接口实现类的用法:Set是一 个接口 定义, 所以 我们只 能使 用它的 实现子 类, Set接口 常用的 子类有java.util.HashSet、java.util. TreeSet;使用起来是相当的简单,请看如下代码:( 注意:本节中我们测试中所用的Student请自定义或使用上节中的Student 类)publicclass SetTest / 程序入口publicstaticvoid main(String
7、 args) SetTest test=new SetTest(); java.util.Collection sSet=test.getUserSet(3); System.out .println( 集合中共有元素: +sSet.size(); / 将Set 中所有元素取出打印:/set是无序的,所以不能根据索引取,得到set 的迭带器:java.util.Iterator it=sSet.iterator(); / 遍历:while(it.hasNext() Student st=it.next(); st.showInfo(); /*取得指定数量 UserInfo对象*paramuse
8、rCount:要创建的用户个数*return*/public java.util.Collection getUserSet(int userCount) / 创建一个集合对象Set sSet =new java.util.HashSet(); for( int i=0;iuserCount;i+) Student ui=new Student( 用户 _ +( char )(65+i),i+1); sSet.add(ui); return sSet; Set的特点是无序的,所以要取出其中的对象,必须通过Set 对象,得到Iterator来遍历这个 Set. 我们在集合中放入对象是是有次序的,
9、但打印出时,不是我们放入的次序,这说明集合中的对象是无序的 - 我们无法得知其真实顺序。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 蓝杰 java讲习录只为不凡而来!4 请注意ui.setName( 用户 _+( char )(65+i);这句, char 型强制转型,得到一个int值对应ASCLL码的字符,所以我们看到输出的是A、 B、 C; 这是因为这三个字符对应的ASCLL码值是 65,66,67。4.java.uti
10、l.List接口的用法相对与无序的Set , List接口提供了多个实现的子类,提供有序的访问集合中元素的方法,这里有序访问的意思可理解为,可根据List中对象放入时的次序来查找对象。List了类除了实现 Collection中的方法外,还有如下几个特有的方法:boolean addAll (int index, Collection c) 向一个 List列表中插入一个对象, index 必须小与getSize() 返回的值。E get (int index) 取得 list列表中指定位置的一个对象,如果index 值大与getSize()返回的值,调用将抛出异常。List接口一个常用的实现
11、类是java.util.Vector和 java.util.ArrayList,示例代码如下:import java.util.ArrayList; import java.util.List; /List测试publicclass ListTest / 程序入口publicstaticvoid main(String args) ListTest st=new ListTest(); List list=st.getUserList(5); System.out .println(List中共有元素 : +list.size(); / 取出 list中的某个位置的元素:Student sd=
12、list.get(3); sd.showInfo(); / 输出列表中所有Student对象信息:st.printList(list); /*打印出 List中对象的内容*paramlist*/publicvoid printList(List list) for( int i=0;ilist.size();i+) / 我们己知 List中放的是 UserInfo对象Student us=list.get(i); us.showInfo(); /*取得指定数量Student对象的一个 List集合*paramuserCount:要创建的用户个数*return名师资料总结 - - -精品资料欢迎
13、下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - 蓝杰 java讲习录只为不凡而来!5 */public java.util.List getUserList(int userCount) List userList =new ArrayList(); for( int i=0;iuserCount;i+) Student ui=new Student( 用户 _ +(char )(65+i),i+1); userList.add(ui); return userL
14、ist; 5.java.util.Map接口应用:现实生活中,我们常会看到这样的一种集合:IP 地址与主机名,身份证号与个人,系统用户用与系统用户对象等,这种一一对应的关系,就叫做映射。Java 提供了专门的集合类用来存放这种对象关系的对象,即java.util.Map接口。 Map是一个接口,有多种具体的实现类,常用的有HashMap和 Hashtable类实现。 Map中存入的对象是一对一对的,即每个对象和它的一个名字(键)关联在一起,Map中数据存放的结构如下图示:Key(键或名 ) Value(key对应的值 ) “userName1 ”UserInfo对象 1 “userName1
15、”UserInfo对象 1 “userName1 ”UserInfo对象 1 . . . . . . 可以看出, Map中存放的是两种对象,一种称为key( 键) ,一种称为value( 值) ,它们在在 Map中是一一对应关系,这一对对象又称做Map中的一个Entry( 项) ;Map 中的键不能重复,但值可以重复。Map接口中定义了如下常用方法:V put ( K key, V value) 向 Map中放入一对有关联关系的对象,如果Map中己有与Key关联的对象,则返回那个对象( 原对象被新放入的对象替代) ,否则返回Null ;参数前的K和 V分别代表了放入的键和值泛型的类型。void
16、 putAll( Map t) 将另外一个Map中的键和值加入到Map中V get ( Object key) 从 Map中返回与参数Key 相关联的value 对象 boolean containsKey ( Object key) 判断 Map的 Key 中是否存在某指定Key 对象 boolean containsValue( Object value) 判断 Map的 value 中是否存在value 对象V remove( Object key) 从 Map中移除 key 对应的 value 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
17、 - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - 蓝杰 java讲习录只为不凡而来!6 int size () 得到 Map中 Entry 的个数 , 即 Map中有多少对对象。Set keySet () 将 Map中所有的key 对象放入一个Set 返回Collection values () 将 Map中所有 Value 对象做为一个Collection返回Map接口常用的实现子类有java.util.HashMap和 java.util.Hashtable;请看 Map使用代码示例:publicclass MapT
18、est / 程序入口publicstaticvoid main(String args) MapTest test=new MapTest(); Map map=test.createUserTable(); / 打印 map中所有信息:test.printMap(map); / 根据己知的 key 取出 map中对应的一个value: String key= +2; System.out .println( 取出的 key 为 +key+ 对象的信息是: ); Student st=map.get(key); st.showInfo(); /*创建用户与名字关系的Map对象*return:
19、用户名字与用户对象关联的Map对象*/public Map createUserTable() Map userMap=new java.util.HashMap(); for( int i=0;i6;i+) Student us=new Student( 我是第 +(i+1)+ 个 ,i); userMap.put( +i,us); return userMap; /*遍历 Map*paramum:Map 对象*/publicvoid printMap(Map um) / 得到 Map中所有 Key 的集合java.util.Set set=um.keySet(); java.util.It
20、erator it=set.iterator(); / 迭代 keywhile(it.hasNext() String key=it.next(); / 取出 key 对应的 value名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - 蓝杰 java讲习录只为不凡而来!7 Student uf=um.get(key); uf.showInfo(); 总结和任务:1.实践:完成对Set,List ,Map接口实现类示例代码的编写;2总结:描述它们的继承体系结构;3总结:说明三种集合间的异同点和适用场景。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -