日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

20172314 2018-2019-1《程序设计与数据结构》第四周学习总结

發(fā)布時(shí)間:2024/4/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 20172314 2018-2019-1《程序设计与数据结构》第四周学习总结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

教材學(xué)習(xí)內(nèi)容總結(jié)

  • 列表:是線性結(jié)構(gòu),可以用鏈表或數(shù)組來(lái)實(shí)現(xiàn),列表集合沒(méi)有內(nèi)在的容量大小,他可以隨著需要而增大。
  • 棧是在其棧頂進(jìn)行添加刪除操作,隊(duì)列在其頭刪除,尾添加,而線性列表可以在列表的中間和末端添加和刪除元素。
  • 列表有三種類(lèi)型:有序列表、無(wú)序列表、索引列表

    分別可以表示為
  • 有序列表:基于列表中的某種特性,元素具有內(nèi)在關(guān)聯(lián),這種關(guān)聯(lián)定義了元素之間的順序。
  • 無(wú)序列表:并不是真正的沒(méi)有順序,而是按照根元素本身無(wú)關(guān)的一種特殊順序放置,列表的使用者會(huì)決定元素的順序。
  • 索引列表:各元素之間也并不能決定在列表中的順序,由使用者決定。每個(gè)元素能從一個(gè)數(shù)字索引得到引用索引值從0開(kāi)始
  • 索引列表和數(shù)組的區(qū)別:索引列表的索引值總是連續(xù)的,如果刪除了一個(gè)元素,其他元素的位置會(huì)像“坍塌”了一樣以消除空隙。
  • Java集合API中的列表

  • 使用無(wú)序列表:學(xué)習(xí)計(jì)劃00
  • 索引列表使用示例:Josephus問(wèn)題
  • 列表ADT
    • 往列表中添加元素
      • 有序列表:add(列表中添加元素)

      • 無(wú)序列表:addToFront

  • ProgramOfStudy的UML圖

  • 使用數(shù)組實(shí)現(xiàn)列表
    • 列表前端固定在索引0處,整數(shù)變量tear表示了列表中的元素?cái)?shù)組,以及把元素添加到列表末端時(shí)的下一個(gè)可用位置。
    • 有序列表和無(wú)序列表的共有操作
      • remove操作:刪除列表中的操作,找到元素需要進(jìn)行n次比較操作,復(fù)雜度為O(n)。
      • contains操作:判斷元素是否包含在列表中,復(fù)雜度同為O(n)
    • 有序列表的add操作:只有Comparable對(duì)象才能儲(chǔ)存在有序列表中。
    • 無(wú)序列表的addAfter操作
  • 使用鏈表實(shí)現(xiàn)列表
    • remove操作:首先要確認(rèn)列表非空,查找要?jiǎng)h除的元素,然后有四種情況
      • 要?jiǎng)h除列表中唯一元素
      • 要?jiǎng)h除列表中首元素
      • 要?jiǎng)h除列表中末尾元素
      • 要?jiǎng)h除列表當(dāng)中的位置

教材學(xué)習(xí)中的問(wèn)題和解決過(guò)程

  • 問(wèn)題一:列表的特征有哪些?如何定義
  • 集合是Java API所提供的一系列類(lèi),可以用于動(dòng)態(tài)存放多個(gè)對(duì)象。集合與數(shù)組的不同在于,集合是大小可變的序列,而且元素類(lèi)型可以不受限定,只要是引用類(lèi)型。集合中不能放基本數(shù)據(jù)類(lèi)型,但可以放基本數(shù)據(jù)類(lèi)型的包裝類(lèi)。 集合類(lèi)全部支持泛型,是一種數(shù)據(jù)安全的用法。java列表是集合的一種,并且列表中的元素是有序的,且允許重復(fù)。java列表又稱(chēng)為java list。

  • 問(wèn)題二:書(shū)上在描述索引列表與數(shù)組的區(qū)別在于索引列表的索引值總是連續(xù)的,那數(shù)組的索引值不也是連續(xù)的嗎?
  • 問(wèn)題二解決:這句話的意思可能并不是說(shuō)連續(xù)與否,因?yàn)閿?shù)組中的元素也是連續(xù)存在的,應(yīng)該是指它出現(xiàn)空位置的修復(fù)速度吧,就像書(shū)上后面描述如果刪除一個(gè)元素,其他元素的位置會(huì)像“坍塌”了一樣以消除產(chǎn)生的間隙。

  • 問(wèn)題三:書(shū)上說(shuō)列表集合沒(méi)有內(nèi)在容量大小,它可以隨著需要而增大,但是當(dāng)列表由數(shù)組來(lái)實(shí)現(xiàn)時(shí),應(yīng)該不能隨意增大了吧
  • 問(wèn)題三解決:數(shù)組的長(zhǎng)度是存放線性表的存儲(chǔ)空間的長(zhǎng)度存儲(chǔ)分配后這個(gè)量是一般是不變的。用數(shù)組實(shí)現(xiàn)列表時(shí),的確需要進(jìn)行擴(kuò)容操作
    protected void expandCapacity() { list = Arrays.copyOf(list, list.length * 2); }
    在這里這句話的含義并不等同于使用鏈表實(shí)現(xiàn)列表時(shí)的情況。

代碼調(diào)試中的問(wèn)題和解決過(guò)程

  • 問(wèn)題一:代碼標(biāo)紅顯示:'contains(T)' in '新第四周.six.LinkedList.LinkedOrderedList' clashes with 'contains(T)' in '新第四周.six.LinkedList.ListADT'; both methods have same erasure, yet neither overrides the other
  • 問(wèn)題一解決:這個(gè)錯(cuò)誤的意思是,兩個(gè)方法在類(lèi)型擦除后,具有相同的原生類(lèi)型參數(shù)列表,但是也不能覆蓋另一個(gè)方法。泛型類(lèi)型在編譯后,會(huì)做類(lèi)型擦除,只剩下原生類(lèi)型。如參數(shù)列表中的T類(lèi)型會(huì)編譯成Object,但是會(huì)有一個(gè)Signature。盡管兩個(gè)方法具有相同的字節(jié)碼,但是類(lèi)型參數(shù)信息用 一個(gè)新的簽名(signature)屬性記錄在類(lèi)模式中。JVM 在裝載類(lèi)時(shí)記錄這個(gè)簽名信息,并在運(yùn)行時(shí)通過(guò)反射使它可用。這就導(dǎo)致了這個(gè)方法既不能作為覆蓋父類(lèi)contains的方法,也不能作為contains方法的重載。

  • 問(wèn)題二:代碼中總有一個(gè)變量modCount,并不理解它存在的意義。
  • 問(wèn)題二解決:通過(guò)查找資料,解釋是:

    modCount字面意思就是修改次數(shù),所有使用modCount屬性的全是線程不安全的,對(duì)內(nèi)容的修改都將增加這個(gè)值,那么在迭代器初始化過(guò)程中會(huì)將這個(gè)值賦給迭代器的 expectedModCount。在迭代過(guò)程中,判斷 modCount 跟 expectedModCount是否相等,如果不相等就表示已經(jīng)有其他線程修改了,在迭代器遍歷的過(guò)程中,因?yàn)锳rrayList被設(shè)計(jì)成非同步的,一旦發(fā)現(xiàn)這個(gè)對(duì)象的modcount和迭代器中存儲(chǔ)的modcount不一樣那就拋異常。

    看起來(lái)不太好理解,舉個(gè)栗子:教務(wù)處網(wǎng)站統(tǒng)計(jì)學(xué)生成績(jī),假如進(jìn)行成績(jī)的修改,則modCount就相當(dāng)于一本日志來(lái)記錄每次對(duì)成績(jī)的修改,萬(wàn)一實(shí)際成績(jī)與教務(wù)處網(wǎng)站存出成績(jī)有出入,則可通過(guò)日志查看問(wèn)題出在哪里。

  • 問(wèn)題三:instanceof是什么意思?

  • 問(wèn)題三解決:java 中的instanceof是一個(gè)二元操作符(運(yùn)算符)運(yùn)算符,由于是字母組成,所以是Java的保留關(guān)鍵字,但是和>=,<=,==屬同一類(lèi),它的作用是用來(lái)判斷,instanceof 左邊對(duì)象是否為instanceof右邊類(lèi)的實(shí)例,返回一個(gè)boolean類(lèi)型值。 還可以用來(lái)判斷子父類(lèi)的所屬關(guān)系。
    • 用法:

      boolean result = object instanceof class
    • 參數(shù):

      Result:布爾類(lèi)型。

      Object:必選項(xiàng)。任意對(duì)象表達(dá)式。

      Class:必選項(xiàng)。任意已定義的對(duì)象類(lèi)。

    • 說(shuō)明:
      如果 object 是 class 的一個(gè)實(shí)例,則 instanceof 運(yùn)算符返回 true。如果 object 不是指定類(lèi)的一個(gè)實(shí)例,或者 object 是 null,則返回 false。

    這樣看來(lái)圖中的意思就是判斷element是否是Comparable類(lèi)型的。

代碼托管

  • pp6.8

  • pp6.11

  • pp6.17

上周考試錯(cuò)題總結(jié)

  • 錯(cuò)題一

  • 錯(cuò)題一解析:刪除操作會(huì)移動(dòng)指針,但不會(huì)返回。
  • 錯(cuò)題二:

  • 錯(cuò)題二解析:多態(tài)引用可以在一段時(shí)間內(nèi)引用不同類(lèi)型的對(duì)象。這句話是正確的,多態(tài)本身就是指多種狀態(tài),我做題時(shí)著重點(diǎn)在一段時(shí)間上,其實(shí)并不是重點(diǎn)。
  • 錯(cuò)題三:

  • 錯(cuò)題三解析:常見(jiàn)的特性應(yīng)該在類(lèi)層次結(jié)構(gòu)中處于高水平,這樣才能最大化利用資源,使低水平的都可以引用。
  • 錯(cuò)題四:

  • 錯(cuò)題四解析:正確的應(yīng)該是實(shí)現(xiàn)基于數(shù)組的堆棧最有效的方法是將堆棧底部保持在數(shù)組的位置0上。因?yàn)槿绻麠T跀?shù)組中是倒序的,效率會(huì)高。

結(jié)對(duì)及互評(píng)

點(diǎn)評(píng)模板:

  • 博客中值得學(xué)習(xí)的或問(wèn)題:
    • 20172305譚鑫的疑難問(wèn)題解決的很好,內(nèi)容全面,排版精美。
    • 20172323王禹涵的博客中課本內(nèi)容總結(jié)有具體代碼,但遇到的問(wèn)題及解決過(guò)程的記錄可以更加豐富一點(diǎn)。
  • 基于評(píng)分標(biāo)準(zhǔn),我給譚鑫的博客打分:9分。得分情況如下:
    • 問(wèn)題加分6分
    • 感悟不假大空加1分
    • 排版精美的加1分
      -正確使用Markdown語(yǔ)法加1分
      -模板中的要素齊全加1分
  • 基于評(píng)分標(biāo)準(zhǔn),我給王禹涵的博客打分:6分。得分情況如下:
    • 排版精美的加1分
    • 問(wèn)題加分2分
    • 感悟不假大空加1分
      -正確使用Markdown語(yǔ)法加1分
      -模板中的要素齊全加1分

其他

這周在做實(shí)驗(yàn)時(shí)遇到的問(wèn)題很多,感覺(jué)沒(méi)有系統(tǒng)化所學(xué)習(xí)的各類(lèi)東西。

學(xué)習(xí)進(jìn)度條

代碼行數(shù)(新增/累積)博客量(新增/累積)學(xué)習(xí)時(shí)間(新增/累積)
目標(biāo)5000行30篇400小時(shí)
第一周0/01/18/8
第二周1163/11631/215/23
第三周774/19371/312/50
第四周3596/55692/512/62

參考:

  • java列表
  • 泛型類(lèi)型擦除與重載和覆蓋問(wèn)題
  • ArrayList中modCount的作用

轉(zhuǎn)載于:https://www.cnblogs.com/YiYiYi/p/9752021.html

總結(jié)

以上是生活随笔為你收集整理的20172314 2018-2019-1《程序设计与数据结构》第四周学习总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。