Java语言程序设计电子课件 第11章.pptx
JAVA语言程序设计
11.1Set和Map11.2集合案例本章小结第十一章目录
教学目标:在程序设计中,常常需要同时存储多个数据,如果存储的数据是同一种数据类型,使用数组这种数据结构就可以实现;如果存储不同数据类型的多个数据,数组就无能为力,这时可以选择JAVA的集合类。本章将介绍JAVA中常见的集合,结合实例介绍各种集合的使用,并通过综合案例展示集合的灵活应用。教学重点:了解JAVA中不同的集合名称及定义方法。掌握Set和Map两种常用集合的语法规则。掌握Set和Map两种常用集合的使用方法。第十一章
JAVA提供了多种集合的定义方式,主要有Set和Map两个接口,每个接口又包括自己的子接口,实现具体的逻辑功能。11.1Set和Map
Set集合里面存放的对象是无序且不允许重复的,集合中的对象不按照特定的排序方式存放,只是将用户要添加的对象加入集合。Set常用的子接口有两个,下面分别进行介绍。1.HashSetHashSet基于HashMap来完成功能,是对HashMap进行了重定义,并且在HashSet中仅仅使用了HashMap中的key来实现各种应用,并不像HashMap那样,value必须跟key成对出现。HashSet的key不允许重复(HashMap的key也不允许重复,如果重复就会覆盖),允许有null值。11.1.1Set集合
HashSet集合的常用方法
TreeSet基于TreeMap来完成功能。TreeSet集合是根据存入的元素进行排序或根据创建集合时提供的比较器进行排序,具体排序规则取决于定义TreeSet时使用的构造方法。2TreeSet
packagep1;publicclassExample11_1{publicstaticvoidmain(String[]args){String[]array=newString[3];array[0]=aa;array[1]=bb;array[2]=cc;for(inti=0;i3;i++)System.out.println(array[i]);}}【例11-1】创建一个长度为3的字符串数组,依次存入3个字符串并将这3个字符串输出,再用Set集合来改写此功能
改用Set集合实现的程序如下:SetStringarr=newHashSetString();arr.add(aa);arr.add(bb);arr.add(cc);IteratorStringit=arr.iterator();while(it.hasNext()){Stringstr=it.next();System.out.println(str);}【例11-1】创建一个长度为3的字符串数组,依次存入3个字符串并将这3个字符串输出,再用Set集合来改写此功能
也可以用Set和for循环遍历来实现上述功能:for(Stringstr:arr){System.out.println(str);}【例11-1】创建一个长度为3的字符串数组,依次存入3个字符串并将这3个字符串输出,再用Set集合来改写此功能
Map集合里面存放的是键值对(key-value),键不能重复,而值可以重复。对Map的访问是通过对键的遍历来找到对应的值,而上一小节所介绍的Set集合,就是直接遍历,Map集合多了对键的遍历。其实,对Map集合的遍历,就是对Set集合的遍历,然后得到键所对应的值。Map集合的子集有4个,下面分别进行介绍。11.1.2Map集合
HashMap是以数组方式进行数据存储的,允许key或value中的一个或两个为null。key不可以重复而value可以重复。这里要强调的是,虽然null可以作为key来使用,但是由于其唯一性的要求,所以不能在一个集合里有两个null作为key。1.HashMap
HashMap集合的常用方法
2.HashTableHashTable与HashMap类似,它支持线程的同步,即任一时刻只能有一个线程能写入HashTable,这也导致了HashTable在写入时会比较慢。HashTable继承自Dictionary类,与HashMap不同的是,它不允许记录的key或value为null,同时效率较低。
LinkedHashMap保存了记录的插入顺序,在用iterator遍历LinkedHashMap时,先得到的记录先插入,在遍历时也会比HashMap慢,拥有HashMap的全部功能及特性。3.LinkedHashMap
TreeMap基于红黑二叉树实现,不允许有null值,key不可以重复,value允许重复。存入Tree