17-Map集合、集合练习_第1页
17-Map集合、集合练习_第2页
17-Map集合、集合练习_第3页
17-Map集合、集合练习_第4页
17-Map集合、集合练习_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、17-Map集合、集合练习Ma原合、集合练习1. Map集合1.1. Map集合介绍Collection 集合的特点:集合中存储的所有元素都是单一元素,元素和元素之间没有必然的关系.因此我们把Collection集合也称为单列集合.Map集合:Map集合中保存的是一组一对数据.数据之间存在着一定的对应关系.Map集合就可以将数据的对应关系维护起来.当这样的数据存储在 Map集合中,我们取出的时候,就可以根据这种对应关系获取到其中这组数据.Col lection岫口去冬改列鼻舍util接口 Map<K, V>类型参数工K -此映射所维护的键的类型V-映射殖的娈血public inte

2、rface Map<K,V>lue值将键映射到值的对象.一个映射不能包含重复的键;每个键最多只能映射到一个值.Map集合中的key是唯一的.每个 key都有一个va和其一一对应.1.2. Map集合中的方法1.2.1. 添加方法Vput. (K kejj V value)将指定的值与此映射中的指定键关联(可选操作),jmUl (MapK ? est ends & 7 ext ends V> m.)从指定映射中将所有映射*系复制到此映射中(可选操作).public class MapDemo public static void main(String args) /创

3、立集合对象Map map = new HashMapf);/ /添加元素Object o = map.put("zhangsan", "beijirg");Obj ect o2 = map. put (,rzhangsan,rr, nanjing");map,put(HlisiT""shanghai1();map tput (Uwangwu11 dongguan1');打印System* out.printLn(map);System.out, println(o);System,out tprintin(o2);A

4、l 1Problems Javadoc ; BeclsratiDn. 日 Console S3?t丁minatdMwpDgmo J盒fon D : %myseftdJkLjavr,6乂电 电口 16年 1 月5日 上午 1 0 ;54;lg)wangwu= dongguan工 lisi= shanghait 2hangsan=ranjing)nullbeijing通过演示Map接口中的Map方法,发现put方法可以将指 定的一组数据保存到集合中.但是put方法有返回值:如果调用put方法的时候,在保存的key和value值时, key在集合中不存在,这时相当于给集合中保存了一组新的 数据.这时

5、put方法得到的null.如果保存的这组数据中的 key在集合中已经存在,这时会用当前的value值覆盖掉key 对应的原来的value值,并返回被覆盖的那个 value值.总结:put方法可以将一组对象保存到 Map中,返回的当 前key对应的原始的value值.如果key是第一次出现返回的null o如果不是第一次就会修改原始的 value值.返回原来的value值1.2.2, 删除方法Vjrejnove Object key存在一个键的映射关系,那么将其从此映射中移除可选操作.根据指定的key,删除key和value这组数据)返回key 对应的value值./*演示Map中的删除方法*/

6、public class MapDemo2 public static void main(String args ) /创立集合对象Map map = new HashMap();map.put("aa","bb");map.put("cc","dd");map.put("ee","fff");System. out .println( map);/删除方法 Object o = map.remove( "aaa"); System. out .prin

7、tln(o);System. out .println(map);/清空map.clear();System. out .println( map);)1.2.3. 获取方法u aget (Ob j ect key)返回指定键所映射的值;如果此映射不包含该键的映射关系,那么返回nulK根据指定的key获取对应的value值.如果给出的key在 集合中没有,返回null./* Map集合中的获取方法*/public class MapDemo3 public static void main(String口 args ) /创立集合对象Map map = new HashMap();map.pu

8、t("aa" , "bb");map.put("cc" , "dd");map.put("ee" , "fff");/打印System.out .println(map);Objecto = map.get("aa"System.out .println(o);System.out .println(map);1.2.4. 判断方法c 口irt wing犬key)如果此映射包含指定键的映射关系,那么返回tencttirt ainsValu吃OP用鸵ut v

9、alue)下臬此映射将一个或多个键映射到指定值,那么返回tenbocl?an.i jEifc.pt y()如果此映射未包含键TS映射关系,那么返回tr回士二=4 ijEih.pty()如果此映射未包含键TS映射关系,那么返回tr血&/*演示Ma原合中的判断方法*/public class MapDemo4 public static void main(Stringargs ) /创立集合对象Map map = new HashMap();map.put("aa","bb");map.put("cc","dd&quo

10、t;);map.put("ee","fff");)/判断集合中是否包含指定的keySystem. out .println( map.containsKey( "aa");System. out .println(map.containsValue("bb");System. out .println(map.isEmpty();1.3. Map集合的遍历1.3.1. Map集合遍历介绍Map集合中保存的key-value 一组数据.它们不能直接使 用Iterator进行遍历.如果需要对 Map集合进行遍历,这时必

11、须先将Map集合转成Collection下的某个集合容器,然后再使用Iterator 进行遍历.Map集合的遍历有两种方式:1、 获取Map中的所有key,然后将这些key保存到Set集合中.这时就可以使用Iterator 进行遍历,进而就 能得到每个的单独的key值,再使用Map中的get(key) 方法得到key对应的value值.2、 获取到Map中的key和value这组数据,再封装成 一个新的对象.1.3.2. keySet 遍历三七 keySel ()Mei 口气牛累用Map 士甯度以£曲口工善之岫斯科kay沮拉转到恺时里/、&5t 至白的泊KM无反 点用造点器逋

12、历Set返回此映射中包含的键的Srt视图.使三幅明白xt前眠&耽-专 黑才下一个元索如桌南fit用nsx上取"当出口储司代址方去用斤厘 ASet生含出立由妙.Q宝正 好是M&p桑各二妒kmy.星4 展flj Map集占住的宫式- key) 方/* /*我可以真以机步番互不 k叩时启的vinluti%Map map = new HashMap();map.put("aa","bb");map.put("cc","dd");map.put("ee","ff&quo

13、t;);/获取到Map中的所有key组成的Set集合 Set set = map.keySet();/遍历Set集合for ( Iterator it = set .iterator.; it .hasNext() ; ) /获取到Set集合中的某个key值Objectkey = it .next();/调用Map1合中的get方法,得到key对应的value值 Object value = map.get( key);System. out .println( key+"." +value );1.3.3. entrySet 遍历mC I&:需“此工,州功

14、3;夺中妁尊母执务取出£ W 次射菰点一不如访士ifenNg疝江=+其五班咫 虬去奉去出蝴隼一时常F机后 奇飞森ME上,HWbp * 新* 5.寺 k. n un lL"6tlcp*电由的研户内ILJC被封*版的卵4对束E的金型也;EntryiJ.辽个力?或京什就可 kp和nluei至我精行就亡后的国疥H泉.IG返回此映射中包含的映射关系的Set视图0i>+.可 .b-itb 工上 P-取洌H色辨.可以.三 二:里中,城;5其2 中收小升液Ka-y +-wi lib卜牝拉时系X/星比孰土酶的* .EJ.区歌刈*灯/"(«¥从 * I皿能磊

15、曲?IEMrT叶尊中酎iBtKjB-y 筐氤 5 Ua rjkeyE# I 用式能 £-Hhp ;二 a I sargs ) /创立集合对象Map map = new HashMap();map.put("aa","bb");map.put("cc","dd");map.put("ee","ff");/获取到所有key和value组成的Entry对象,保存到Set集合中 Set set = map.entrySet();/遍历Set集合for (Iterator i

16、t = set .iterator.;it .hasNext();) /已经获取到key和value组成的Entry对象Object obj = it .next();/由于取出的数据被提升成Object类型,这时需要向下转型Entry entry = (Entry) obj ;System. out .println( entry .getKey()+ "." +entry .getValue(); 就业班中学习JavaWE升的JSP中的JSTL技术时,其中 有foreach的标签,遍历Map集合的时候,使用的entrySet.1.3.4. values 方法Cel. i

17、qi.nOva.lu.es ()返回此映射中包含的值的Coll-tig神,图.获取到的Map集合中的所有value值组成的Collection拿a景口 O/创立集合对象Map map = new HashMap();map.put("aa","bb");map.put("cc","dd");map.put("ee","ff");/获取到Map1合中的所有value值Collection coll = mapvalues();/遍历集合for (Iterator it = co

18、ll .iterator.; it .hasNext() ;) System. out .println( it .next();1.4. HashMap 演示java. util粪 HashMap<K, V>m.lang.Object1 j 1一. ut 工 l.JLbu,rwctMwDEK.1 jut i L-V>类型参数:E-此映射所维护的键的类型一所映射值的类型基于哈希表的Map接口的实现.此实现提供所有可选的映 射操作,并允许使用null值和null键.除了非同步和允 许使用null 之外HashMap类与Hashtable大致相同.此类 不保证映射的顺序,特别是它

19、不保证该顺序恒久不变.HashMapM Map接口的实现类,它的底层使用的哈希表 哈希表作用在 HashMa潭合的key上.当使用自定义对象作为 HashMa潭合的key值时)这个 自定义对象所属的类需要复写 Object类中的hashCode和 equals 方法./*演示HashMap,使用自定义对象作为 Map的key值*/public class HashMapDemo public static void main(String口 args ) /创立集合对象HashMap map = new HashMap();map.put( new Person( map.put( new P

20、erson( map.put( new Person( map.put( new Person("张三,23),"上海");"张三,23),"上海");"李四",33),"北京");"王五",39),"东莞");/获取所有的key组成的set集合Set set = map.keySet();/遍历)for ( Iterator it = set .iterator.; it .hasNext() Objectkey = it .next();/获取valu

21、e值Objectvalue = map.get( key);System. out .println( key+"." +value );1.5. TreeMap 演示j ava. util类 TreeMap<Kr V>lan已"Objetrt1 java utLlAb str wet Man <K. V>1 j ava. util/* 使用自定义对象作为 TreeMap的key值*/public class TreeMapDemo public static void main(String args ) /创立对象TreeMap map

22、 = new TreeMap();/*需求:统计字符串中每个字符的次数.分析:字符串数据是不确定的数据.其中的字符是什么也不知道,但是我们可以只要这个字符出现过,就需要给出一个计数器统计这个字符的次数遍历字符串,取出每个字符,然后判断它是否已经在统计的计数器中出现过,如果出现过,就给这个计数器 +1,如果没有出现过,说明这个字符是第一次出现 就给这个字符的计数器赋值为 1.统计字符的次数:字符 次数使用从字符串中取出的字符作为Map的key值,次数作为Map的value值只要从字符串中取出一个字符,就判断当前这个字符在Map的key中是否存在,如果存在,就取出对应的 value值+1,再保存到

23、Map中.如果不存在,就说明 Treellap<Kj V>会参数K -此映身悔护的键的类型7-映射值的类型基于红黑树(Red-Black tree )的NavigableMap实现.该映 射根据其键的自然顺序讲行排序.或者根据创立映射时提 供白C Comparator进行排序,具体取决于使用的构造方法.TreeMap的底层是二叉树结构.二叉树作用在集合的key上.TreeMap集合可以对保存在其中的元素进行排序.如果将对象保存在TreeMap集合中,key上的这个对象应 该具备比拟的功能, key上的对象所属的类应该实现 Comparable接口.或者是在创立 TreeMap的时候

24、,传递一 个 Comparator 对象.map.put( new Person("张三",23),"上海");map.put( new Person("张三,23),"上海");map.put( new Person("李四,33),"北京");map.put( new Person("王五",33),"东莞");/使用entrySet方法进行遍历Set set = map.entrySet();for ( Iteratorit = set .itera

25、tor();it .hasNext();)Object obj = it .next();Entry entry = (Entry)obj ;System. out .println( entry .getKey()+ "."+entry .getValue();publicargs ) 1.6. Map 练习:/遍历字符串 for (int i = 0 ; i < s.length() ; i + )/取出字符char ch = s.charAt( i);/判断当前的字符在Map中是否存在if ( map.containsKey(ch) )/判断成立说明当前从字符串

26、中取出的字符,已经出现过 Integer value = (Integer)mapget( ch);/给value+1 ,再保存到Map中 value = value + 1; mapput( ch, value ); else /判断不成立,说明当前的字符是第一次出现 mapput( ch, 1);/遍历Ma谍合,取出每个字符的次数Set set = map.keySet();for ( Iterator it = set .iterator() ; it .hasNext() ; ) Objectkey = it .next();Object value = map.get( key);S

27、ystem. out .println(,"" + key +"'出现的次数是:"+value );1.7. Hashtable 演示j 3.17 3 .1.1类 Hashtable<K, V>langi Objset1 jH i 1 igt iyairyCK t T>1 j ut il. Uafht able<Kj V>所有已实现的接口< r£目上iali卫ab 1Cl国力e&匕13 MapCK, V?直接子类.F-QPGHti U3j UID-faul ts此类实现一个哈希表,该哈希表将键

28、映射到相应的值.任 何非null对象都可以用作键或值.Hashtable集合它属于 Map集合但是是JDK1.0时期的, 底层是哈希表,和HashMa网能一致.它是平安的./*演示古老的双列集合 Hashtable*/public class HashtableDemo public static void main(String口args ) /创立集合对象Hashtable table = new Hashtable();table.put("aa" ,"bb");table.put("ccc","ddd");

29、table.put("ccc","ddd");table.put("eee","fff");/遍历Enumeration en = table .keys();while ( en.hasMoreElements() )Object key = en.nextElement();Object value = table .get( key);System. out .println( key+"."+value );2.工具类介绍工具类:在JDK中提供大量的类.但是这些类都有对用的 功能.可是某

30、些的功能并不能满足实际的所有需求,于是 针对这些类有提供的其他的类,处于辅助其他类的这些类被称为工具类JDK中的工具类一般都以s结尾.并且工具类中的所有方 法全部是静态的.2.1. Collections 工具类j ava_ ut il类 CollectionslangObject1 jwu 且-util_ Collect ion.spublic class Collections 日xtends 吨:met此类完全由在 collection 上进行操作或返回 collection的静态方法组成.它包含在collection 上操作的多态算法,即“包装器,包装器返回由指定 collection

31、支持的新collection )以及少数其他内容.Collections :中的方法都是静态的,可以操作集合.adilAH (Collection<9 super T> c3 T. . elftinftnts)'2蹲痛指定元素添加到才淀collection中0List list = new ArrayList();/使用Collect ions中的自dd A11方法一次性把多个数据添加到集合中Collect ions - addA L L (li st, "aa,TbbT,/"ccc11);<T> voidSystem.out.println

32、(list);copy (List<? super T> de.stj List <? ext ends T> xrc) 一将所有元素从一不列表复制到另一个列表.KtAll<eigtyLit ()返回空的列表匚不可变的)“static?v>如遇v>en口tyMan0返回空的映射(不可变的)static<T> £=4<T>empty53 ()返回空的set (不可变的),etatic<Temmer at ion (匚011日工七1口114T?c)走回一个指正collection上的枚举占使用古老的遍历List集合E

33、numeration en = Collections.ertumertion(list)j while( en*hasMoreElements() )System.out< printIn(en,nextElement();stIticHT' to;ifill (Ligt <? supei T> listT obj)使用指定兀素替换指定列表中的所有兀素.7:is reverse (List<?> list)反转指定列表中元素的顺序.反转List集合中的元素AtKtic<T> 匚:cnEQira t匚黑 fT7reverSeOrder.返回一个

34、比拟器i它强行逆转实现了 C.町打仕球接口的对象statLC<T> 匚:皿utUfT)reversed rder (Smuarnt /<T, cmp)返回一个比拟器,它强行逆转指定比拟器的顺序.反转比拟器.7-/ +8 *演示反转比拟器9 */10 public class CelleGtionsDemo2 LI- public static void main(Striiig args) L2L3TreeSet set = new TreeSet( Collections.reverseOrder() )jL415set,add(aaa");LSset,add(&

35、quot;AAA");17set ,addtAbA1');L8set*add(1TBBB");L9set.add(Mbbb")jZ0set . add("ccc");21for (Iterator it - set * iterator(); it.hssNext();) System,out* println(it * next(); )25)>6 ic. wiishuffle11宫1:?7> List使用默认随机源时指定列表进行置换.-(- fc-TO1±shufflelist, Rands md使用指定的随机源对指定列表进行置换.结论:在使用集合的时候,如果发现需要使用集合的某个 功能,但是自身没有这时就需要考虑使用Collections 中的方法.2.2. Arrays 工具类java, util类 ArraysJ a用a, 13ng. Obj ert1 j ava. util/* 演示Arrays中的方法,将数组转成集合*/public class ArraysDemo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论