標籤:指令碼 table 前端 實驗 考試 java 容量 父類 fst
學號 2017-2018-2 《程式設計與資料結構》第四周學習總結教材學習內容總結
第六章主要研究了列表的概念以及某些管理列表的方法。
列表集合
- 鏈表與列表集合之間的差別:鏈表是一種實現策略,使用引用來在對象之間建立連結。
之前的學習中就使用了鏈表來分別實現棧和隊列集合。 列表集合是種概念性標記法,
其思想是使事物以線性列表的方式進行組織。就像棧和隊列一樣,列表也可以使用鏈表或數組來實現。
- 列表集合沒有內在的容量大小,它可以隨著需要而增大。
- 棧和隊列都是線性結構,可以像列表那樣進行思考,但其元素只能在末端添加和刪除。列表集合更一般化,可以在列表的中間和末端添加和刪除元素。
- 列表集合的3種類型:
- 有序列表(Cordered list), 其元素按照元素的某種內在特性進行排序。
- 無序列表(unordered list),其元素間不具有內在順序,元素按使用者所選擇的任意方式排序。
- 索引列表(indexed list), 其元素可以用數字索引來引用,維護一段連續的數字索引值。
- 有序列表:列表基於某個關索引值排序。對於任何已添加到有序表中的元素,只要給定了元素的關索引值,同時列表已經
定義了元素的所有關索引值,那麼它在列表中就會有一個固定的位置。
- 無序列表:各元素的位置並不基於元素的任何內在特性。但列表中的元素仍是按照特殊順序放置著,只不過這種順序與元素
本身無關。列表的使用者會決定元素的順序。圖6.2是一個無序列表的概念圖。一個 新元素可以置於列表的前端或者末端,或者
被插入到列表中某個特定元素之後。
- 索引列表:各元素間也不存在能夠決定它們在列表中的順序的內在系。列表的使用者決定了元素的順序。不過,除此以外,其
每個元素都能夠從一 個數字引值得到引用,該索引值從列表頭開始從0連續增加直到列表末端。新的元素可以被添加到列表的任
一位置, 包括列表的前端和末端。每自列表發生改變,索引值就相應調整以保持順序和連續性。注意,索引列表和數組的根本區別在於:索引列表的索引值總是連續的。如果刪除了或插入,其他的元素會進行位移,以消除間隙或騰出位置。
Java 集合API中的列表
- Java集合API提供的列表類主要是支援索引列表。在一定程度上,這些類與無序列表是重疊的。
然而,需要注意的是,Java API並沒有任何類能直接實現以上描述的有序列表。
ArrayList和LinkedList都實現了java.util.List 介面。
由Java API提供的列表的樣本。
- 使用無序列表:學習計劃
- 索引列表:Josephus問題(當列表中的事件不是按照順序取出而是每隔i個元素提取,直到結束,如何找到這些事件的順序)
列表ADT
- 很多常見操作可以為所有類型的列表定義。這些操作之間的差別在於如何添加元素。
- 有一些操作對有序列表和無序列表都是通用的。有序列表與無序列表之間的差別通常主要體現在往列表添加元素上。
- 在有序列表中,只需指定要添加的新元素。該元素在列表中的位置取決於其索引值。
- 無序列表支援add操作的3個變體。可以把元素添加到列表的前端、末端或是列表中某個已有元素的後面。
教材學習中的問題和解決過程
某個列表是否可以既是有序列表,又是索引列表?可能,但沒有什麼意義。如果某個列表既是有序列表,又是索引列表,那麼,如果客戶應用程式試圖在某個索引處添加一一個元素,或者修改了某個索引處的元素(這樣該元素就不在正確的順序位置了),情況會怎麼樣?哪個規則的優先順序更高,索引位置還是順序?
- 問題1解決方案:XXXXXX
- 問題2:最後,save和load方法分別用來把ProgramOfStudy對象寫入個檔案中, 以及從檔案中讀取它,(與在前面樣本中看到的基於文本的IO操作不同,這裡使用一個名 為序列化的過程,以二進位流的形式來讀取和寫入對象。因此,只需兒行代碼,就可以把對象的目前狀態儲存起來。在這裡意味著,當前儲存在學習計劃中的所有課程,都作為對象的一部分而儲存。
注意,ProgramOsudy和Course類實現了Serializable 介面。為了是某個對象能使用序列化進行在儲,其類必須實現Serializable.在Serializable介面中沒有任何方法,它只是表明,該對象可以轉控為序列化表示形式。ArrayList 和LmkedList類也實現了Serializable介面。
序列化
public class Course implements Serializable
表明該類可以被序列化對
Serializable介面不含有任何方法
代碼調試中的問題和解決過程
問題1:
- 問題1解決方案:XXXXXX
- 問題2:XXXXXX
- 問題2解決方案:XXXXXX
...
代碼託管
(statistics.sh指令碼的運行結果)
上周考試錯題總結
結對及互評點評:
- 部落格中值得學習的或問題:
- 代碼中值得學習的或問題:
- 本周結對學習情況
結對同學學號1
- 結對學習內容
- 對實驗一遇見的問題進行討論
- 教材第六章內容的共同學習
- 第六章代碼編寫的討論
點評過的同學部落格和代碼
我們的學習模式又回到了上個學期,又不斷的提前在學習內容,其實課前預習是好的,但是我覺得部落格的提交時間
可以放到這一章的課上完之後再提交,畢竟如果在上課之前我們就把所有的問題都寫好了,時間有點緊,而且如果
是上完課,對自己教材問題的解答也會更加的清晰,所以我覺的可以在上一個部落格完成之後放出下周學習的要求,
但是deadline可以定在上完課之後的一兩天,這樣就不會那麼緊張,也能達到預習的效果。
學習進度條
|
|
程式碼數(新增/累積) |
部落格量(新增/累積) |
學習時間(新增/累積) |
| 目標 |
5000行 |
30篇 |
400小時 |
|
| 第一周 |
0/0 |
1/1 |
10/10 |
|
| 第二周 |
326/326 |
1/2 |
18/28 |
學習在一點點的深入 |
| 第三周 |
784/1110 |
1/3 |
25/53 |
|
參考資料
《Java程式設計與資料結構教程(第二版)》
- 《Java程式設計與資料結構教程(第二版)》學習指導
...
20172310 2017-2018《程式設計與資料結構》(下)第四周學習總結