• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于數(shù)據(jù)結(jié)構(gòu)與簡化內(nèi)存模型的Java集合教學(xué)方法研究

    2018-06-01 06:47:35胡建華
    計算機教育 2018年5期
    關(guān)鍵詞:鏈表數(shù)據(jù)結(jié)構(gòu)內(nèi)存

    胡建華,鄢 旭

    (1.浙江農(nóng)林大學(xué)暨陽學(xué)院 工程技術(shù)系,浙江 諸暨 311800;2.江西旅游商貿(mào)職業(yè)學(xué)院 現(xiàn)代教育技術(shù)中心,江西 南昌 330000)

    0 引 言

    Java語言課程中,集合框架是學(xué)生反映較難掌握的內(nèi)容之一。該部分提供了很多接口與類,List、ArrayList、LinkedList、HashMap、TreeMap 等,如這些類的區(qū)別在哪里,在什么情況下使用,這些問題時常困擾著學(xué)生。筆者發(fā)現(xiàn)很少有教材從理論的高度對Java集合框架進行清晰闡述,絕大部分教材只是羅列每個類的屬性與方法,沒有解釋每個類的區(qū)別及應(yīng)用場景;少數(shù)教材簡單說明ArrayList、LinkedList的實現(xiàn)方法不同,但不夠全面,也沒有說明一個集合對象保存的并不是元素的內(nèi)容,而只是元素對象的引用(可以理解為地址)。在多年的Java語言課程教學(xué)中,筆者發(fā)現(xiàn)從數(shù)據(jù)結(jié)構(gòu)理論角度介紹Java集合框架組成,以JVM簡化內(nèi)存模型描述集合對象的實現(xiàn),能幫助學(xué)生輕松理解Java集合框架,并靈活應(yīng)用,取得了較好的教學(xué)效果。

    1 Java的集合框架就是數(shù)據(jù)結(jié)構(gòu)課程中集合的抽象

    要從數(shù)據(jù)結(jié)構(gòu)理論的角度理解Java集合框架,第一步是回顧數(shù)據(jù)結(jié)構(gòu)課程的內(nèi)容。數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計算問題中數(shù)據(jù)的組織、存儲及操作的學(xué)科。所謂非數(shù)值計算問題,指不是一個公式就能解決的問題,比如排序問題等。首先講解數(shù)據(jù)的組織、存儲及操作,見表1。

    表1 數(shù)據(jù)的組織、存儲及操作

    接著,講解集合、線性結(jié)構(gòu)、線性表、順序表、鏈表的區(qū)別。集合是一批數(shù)據(jù)(可以無序);線性結(jié)構(gòu)把一批數(shù)據(jù)組織起來,除了首元素與尾元素,中間任何一個元素只有一個前驅(qū)、一個后繼。從操作受限的角度看,線性結(jié)構(gòu)可分為線性表、隊列與棧3種,線性表就是操作不受限的線性結(jié)構(gòu)。從存儲的角度看,順序存儲的線性表叫順序表,鏈?zhǔn)酱鎯Φ木€性表叫鏈表。

    最后,引導(dǎo)學(xué)生分析順序表與鏈表在訪問、插入、刪除一個元素時的效率區(qū)別。

    第二步,講解Java的集合框架組成,見圖1。

    明確告訴學(xué)生,Collection接口就是數(shù)據(jù)結(jié)構(gòu)中集合的抽象,該接口提供的方法,就是要完成數(shù)據(jù)結(jié)構(gòu)中集合的常用算法,諸如建立集合、插入元素、刪除元素、集合的交叉并補運算等。針對不同存儲結(jié)構(gòu)有不同的實現(xiàn)方式,這些方法都是抽象方法,具體由它的子類實現(xiàn),因此Collection定義成接口。

    圖1 Java的集合框架組成

    ArrayList類用順序存儲方式實現(xiàn),ArrayList就是順序表;LinkedList用鏈?zhǔn)酱鎯Ψ绞綄崿F(xiàn),LinkedList就是鏈表;兩者的區(qū)別在于訪問、插入、刪除一個元素時,效率是不同的。若一個集合經(jīng)常要插入、刪除元素,則LinkedList效率高。

    Set就是在數(shù)據(jù)結(jié)構(gòu)集合的基礎(chǔ)上加了唯一性要求;當(dāng)Map把鍵—值看做一個整體時,它就是集合,并提供了項集。

    進一步講解,HashSet、HashMap等是無序集合,TreeSet、TreeMap是通過二叉排序法建立的有序集合。

    2 Java集合對象保存的是集合中每個元素對象的引用

    也許受到C語言課程中數(shù)組元素分配內(nèi)存空間的影響,很多學(xué)生認(rèn)為集合中保存了元素對象本身,因此他們不理解一個對象加入兩個集合等問題。一個集合中刪除了這個元素對象,為什么另一個集合還能顯示這個對象呢?所以,Java教學(xué)中,理解Java的內(nèi)存管理是很重要的。Java實際的內(nèi)存管理比較復(fù)雜,但可以用簡化的方式描述,既便于學(xué)生理解,又不違背Java內(nèi)存管理原則 ??梢院唵蔚匕褍?nèi)存分為兩部分:類區(qū)與對象區(qū)。下面用簡化內(nèi)存模型分析一段Java集合代碼。

    list使用類中,main方法的簡化內(nèi)存模型分析見圖2。

    由圖2可見,張三、令狐沖兩個學(xué)生對象是獨立建立在對象區(qū)的,jsj.add(xs1)只是通過調(diào)用add方法,把張三這個學(xué)生對象的地址加入到集合對象jsj中。jsj中刪除了一個學(xué)生對象,只是刪除了對這個對象的引用,這個對象本身還在內(nèi)存中。

    圖2 main方法的簡化內(nèi)存模型分析圖

    3 結(jié) 語

    通過與數(shù)據(jù)結(jié)構(gòu)知識相結(jié)合,可以用簡化內(nèi)存模型分析集合代碼,幫助學(xué)生輕松掌握J(rèn)ava集合框架的本質(zhì),而不會迷惘于成堆的接口和類中。學(xué)院2015級學(xué)生按此方法教學(xué),該門課程平均成績達到85分,而前一屆學(xué)生未采用這種講課方法,同樣試卷考試,課程平均成績只有70分。由此可見,采用本文這種類比式教學(xué)方法后,教學(xué)效果提高顯著。

    [1] 董東. 數(shù)據(jù)結(jié)構(gòu)與Java面向?qū)ο蟪绦蛟O(shè)計課程之間的有效銜接[J]. 計算機教育, 2015(15): 82-84.

    [2] 宋晏. 基于知識邏輯結(jié)構(gòu)與思維形式注記教學(xué)論的Java教學(xué)設(shè)計[J]. 工業(yè)和信息化教育, 2014(5): 68-74.

    猜你喜歡
    鏈表數(shù)據(jù)結(jié)構(gòu)內(nèi)存
    基于二進制鏈表的粗糙集屬性約簡
    “春夏秋冬”的內(nèi)存
    跟麥咭學(xué)編程
    基于鏈表多分支路徑樹的云存儲數(shù)據(jù)完整性驗證機制
    “翻轉(zhuǎn)課堂”教學(xué)模式的探討——以《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)為例
    高職高專數(shù)據(jù)結(jié)構(gòu)教學(xué)改革探討
    中國市場(2016年45期)2016-05-17 05:15:48
    鏈表方式集中器抄表的設(shè)計
    電測與儀表(2014年1期)2014-04-04 12:00:22
    TRIZ理論在“數(shù)據(jù)結(jié)構(gòu)”多媒體教學(xué)中的應(yīng)用
    《數(shù)據(jù)結(jié)構(gòu)》教學(xué)方法創(chuàng)新探討
    河南科技(2014年5期)2014-02-27 14:08:57
    基于內(nèi)存的地理信息訪問技術(shù)
    嵩明县| 沁阳市| 昌图县| 深圳市| 宜兰市| 凤阳县| 盱眙县| 延边| 象山县| 固始县| 沙河市| 青岛市| 吴川市| 罗平县| 曲松县| 郓城县| 宁化县| 沙雅县| 安西县| 贵南县| 遵义市| 志丹县| 三台县| 芦溪县| 志丹县| 鄂伦春自治旗| 正镶白旗| 涿鹿县| 长白| 唐海县| 广西| 新昌县| 齐河县| 南澳县| 曲靖市| 萨迦县| 佛教| 金阳县| 涞源县| 手游| 宜昌市|