更全的杂志信息网

基于数据结构与简化内存模型的Java集合教学方法研究

更新时间:2009-03-28

0 引 言

Java语言课程中,集合框架是学生反映较难掌握的内容之一。该部分提供了很多接口与类,List、ArrayList、LinkedList、HashMap、TreeMap 等,如这些类的区别在哪里,在什么情况下使用,这些问题时常困扰着学生。笔者发现很少有教材从理论的高度对Java集合框架进行清晰阐述,绝大部分教材只是罗列每个类的属性与方法,没有解释每个类的区别及应用场景;少数教材简单说明ArrayList、LinkedList的实现方法不同,但不够全面,也没有说明一个集合对象保存的并不是元素的内容,而只是元素对象的引用(可以理解为地址)。在多年的Java语言课程教学中,笔者发现从数据结构理论角度介绍Java集合框架组成,以JVM简化内存模型描述集合对象的实现,能帮助学生轻松理解Java集合框架,并灵活应用,取得了较好的教学效果。

(1)根据野外露头、岩心、薄片观察法对裂缝有效性的研究,野外露头观察中可通过统计切穿层的数目测定裂缝面的贯穿性,岩心观察中,用每米岩心上裂缝相交的点数表示裂缝连通性,微观裂缝分析中,常使用薄片分析法求取裂缝岩心的宽度。

1 Java的集合框架就是数据结构课程中集合的抽象

要从数据结构理论的角度理解Java集合框架,第一步是回顾数据结构课程的内容。数据结构是一门研究非数值计算问题中数据的组织、存储及操作的学科。所谓非数值计算问题,指不是一个公式就能解决的问题,比如排序问题等。首先讲解数据的组织、存储及操作,见表1。

为什么大部分学校并没有优先向普通学生开放呢?相对于社会上办的红红火火的体育俱乐部,中小学校建有体育俱乐部的数量为什么很少?这其中主要的阻力是什么呢?

 

表1 数据的组织、存储及操作

  

数据组织—逻辑结构数据存储—物理结构 操作—常用算法1.集合 1. 顺序存储 1.建立逻辑结构(对象)2.线性结构 2. 链式存储 2.插入一个元素3.树形结构 3. 哈希存储 3.删除4.图结构 4. 混合存储 4.查找5.排序6.集合运算

接着,讲解集合、线性结构、线性表、顺序表、链表的区别。集合是一批数据(可以无序);线性结构把一批数据组织起来,除了首元素与尾元素,中间任何一个元素只有一个前驱、一个后继。从操作受限的角度看,线性结构可分为线性表、队列与栈3种,线性表就是操作不受限的线性结构。从存储的角度看,顺序存储的线性表叫顺序表,链式存储的线性表叫链表。

最后,引导学生分析顺序表与链表在访问、插入、删除一个元素时的效率区别。

进一步讲解,HashSet、HashMap等是无序集合,TreeSet、TreeMap是通过二叉排序法建立的有序集合。

Set就是在数据结构集合的基础上加了唯一性要求;当Map把键—值看做一个整体时,它就是集合,并提供了项集。

  

图1 Java的集合框架组成

也许受到C语言课程中数组元素分配内存空间的影响,很多学生认为集合中保存了元素对象本身,因此他们不理解一个对象加入两个集合等问题。一个集合中删除了这个元素对象,为什么另一个集合还能显示这个对象呢?所以,Java教学中,理解Java的内存管理是很重要的。Java实际的内存管理比较复杂,但可以用简化的方式描述,既便于学生理解,又不违背Java内存管理原则 。可以简单地把内存分为两部分:类区与对象区。下面用简化内存模型分析一段Java集合代码。

建筑自身除了可以向使用者传达一定的信息以外,还可以引导使用者的行为。正如布莱恩·劳森所说,“一个房子不仅给人们提供遮蔽,而且我们还期望它看上去像一个房子,从而也告诉了我们的来访者举止应该如何[26]。”西区是接待宾客的区域,深柳堂、方形水池与临池别馆中心对齐,隔岸呼应。临池别馆的屋顶与庭园大门的屋顶结合,使面宽与深柳堂相等,形成方正整齐的格局。临池别馆的用地不在庭园的区域,而是缩进了门厅的用地里,拉宽了与深柳堂之间的空间尺度,也使西区空间更加明亮。方正整齐的空间格局和明亮宽敞的空间营造了严肃与端庄的空间氛围。东区作为休闲观赏区,通过曲折多变的走道以及高矮参差的树木,营造了轻松自由的环境气氛。

明确告诉学生,Collection接口就是数据结构中集合的抽象,该接口提供的方法,就是要完成数据结构中集合的常用算法,诸如建立集合、插入元素、删除元素、集合的交叉并补运算等。针对不同存储结构有不同的实现方式,这些方法都是抽象方法,具体由它的子类实现,因此Collection定义成接口。

第二步,讲解Java的集合框架组成,见图1。

2 Java集合对象保存的是集合中每个元素对象的引用

ArrayList类用顺序存储方式实现,ArrayList就是顺序表;LinkedList用链式存储方式实现,LinkedList就是链表;两者的区别在于访问、插入、删除一个元素时,效率是不同的。若一个集合经常要插入、删除元素,则LinkedList效率高。

 
 
 

list使用类中,main方法的简化内存模型分析见图2。

郝庄村东北堤线3m以上为重粉质壤土与黏土互层,灰黄色至深灰色,具微透水性,黏粒含量偏大,含水量偏大,3.0m以上土层不宜做为筑堤土料。

由图2可见,张三、令狐冲两个学生对象是独立建立在对象区的,jsj.add(xs1)只是通过调用add方法,把张三这个学生对象的地址加入到集合对象jsj中。jsj中删除了一个学生对象,只是删除了对这个对象的引用,这个对象本身还在内存中。

  

图2 main方法的简化内存模型分析图

3 结 语

通过与数据结构知识相结合,可以用简化内存模型分析集合代码,帮助学生轻松掌握Java集合框架的本质,而不会迷惘于成堆的接口和类中。学院2015级学生按此方法教学,该门课程平均成绩达到85分,而前一届学生未采用这种讲课方法,同样试卷考试,课程平均成绩只有70分。由此可见,采用本文这种类比式教学方法后,教学效果提高显著。

参考文献:

[1] 董东. 数据结构与Java面向对象程序设计课程之间的有效衔接[J]. 计算机教育, 2015(15): 82-84.

[2] 宋晏. 基于知识逻辑结构与思维形式注记教学论的Java教学设计[J]. 工业和信息化教育, 2014(5): 68-74.

 
胡建华,鄢旭
《计算机教育》 2018年第05期
《计算机教育》2018年第05期文献

服务严谨可靠 7×14小时在线支持 支持宝特邀商家 不满意退款

本站非杂志社官网,上千家国家级期刊、省级期刊、北大核心、南大核心、专业的职称论文发表网站。
职称论文发表、杂志论文发表、期刊征稿、期刊投稿,论文发表指导正规机构。是您首选最可靠,最快速的期刊论文发表网站。
免责声明:本网站部分资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有
如有不愿意被转载的情况,请通知我们删除已转载的信息 粤ICP备2023046998号