PAGE5
《面向对象程序设计》教案
第26讲
教学对象
计算机科学技术专业
授课内容
10.4Set接口及实现类
10.5Queue接口及实现类
10.6案例学习——用集合存储、遍历员工记录
课程标准
教学目标
(一)知识目标
1.掌握Set接口及实现类的定义和使用
2.掌握Queue接口及实现类的定义和使用
(二)能力目标
1.熟练掌握HashSet和TreeSet集合的基本操作,能够熟练使用Set集合解决实际问题
2.熟练掌握Queue接口的基本操作,能够熟练使用LinkedList解决实际问题
教学方法
采用讲授法、演示法、讨论法、案例教学。
学时及分配(第1学时50分钟)
课堂讲授30分钟
课堂练习20分钟
10.4Set接口及实现类
学时及分配(第2学时50分钟)
课堂讲授20分钟
课堂练习30分钟
10.5Queue接口及实现类
10.6案例学习——用集合存储、遍历员工记录
知识点分析
重点:
HashSet和TreeSet集合的基本操作
ArrayDeque类和LinkedList类的使用
难点:
自定义比较器
教学过程设计
内容
方式
问题导入
在Connection接口中,有两个重要接口List和Set,上节课已经讲解了List接口及其实现类的使用,本节课将继续讲解Connection接口的另一个子接口Set接口及其实现类的使用。
内容要点
10.4Set接口及实现类
Set接口对象类似于数学上的集合概念,其中不允许有重复的元素。Set接口没有定义新的方法,只包含从Collection接口继承的方法。Set接口的常用实现类有:HashSet类、TreeSet类和LinkedHashSet类。
10.4.1HashSet类
HashSet类用散列方法存储元素,具有最好的存取性能,但元素没有顺序。
HashSet类的构造方法有:
HashSet():创建一个空的散列集合,该集合的默认初始容量是16,默认装填因子(loadfactor)是0.75。装填因子决定何时对散列表进行再散列。例如,如果装填因子为0.75(默认值),而表中超过75%的位置已经填入元素,这个表就会用双倍的桶数自动地进行再散列。对于大多数应用程序来说,装填因子为75%是比较合理的。
HashSet(Collectionc):用指定的集合c的元素创建一个散列集合。
HashSet(intinitialCapacity):创建一个散列集合,并指定集合的初始容量。
下面代码演示了HashSet的使用。
varwords=newHashSet();
words.add(one);
words.add(two);
words.add(three);
words.add(four);
words.add(one);//不能将重复的元素添加到集合中
for(varw:words)
System.out.print(w+);//fouronetwothree
从结果可以看到,在向Set对象中添加元素时,重复的元素不能添加到集合中。另外,由于程序中使用的实现类为HashSet,它并不保证集合中元素的顺序。
10.4.2TreeSet类
TreeSet实现一种树集合,它使用红-黑树为元素排序,添加到TreeSet中的元素必须是可比较的,即元素的类必须实现ComparableT接口。它的操作要比HashSet慢。
TreeSet类的默认构造方法创建一个空的树集合,其他构造方法如下。
TreeSet(Collectionc):用指定集合c中的元素创建一个新的树集合,集合中的元素按自然顺序排序。
TreeSet(Comparatorc):创建一个空的树集合,元素的排序规则按给定的比较器c的规则排序。
【程序10-9】TreeSetDemo.java
10.4.3对象顺序
创建TreeSet类对象时如果没有指定比较器对象,集合中的元素按自然顺序排列。所谓自然顺序(naturalorder)是指集合对象实现了ComparableT接口的compareTo()方法,对象则根据该方法排序。如果试图对没有实现ComparableT接口的集合元素排序,将抛出ClassCastException异常。另一种排序方法是创建TreeSet对象时指定一个比较器对象,这样,元素将按比较器的规则排序。如果需要指定新的比较规则,可以定义一个类实现ComparatorT接口,然后为集合提供一个新的比较器