用固定數組來實現隊列的效率不高。html
問題1解決方案:
根據書上所說前端
- add操做能夠確保隊列中有給定的元素。若是給定元素沒有添加到隊列中,該操做將拋出一個異常。
- offer操做把給定元素插入到隊列中,若是插入成功,返回true,不然返回false。
查詢API所得,
java
也就是書上說的一個是提供了一個布爾返回值,另外一個則是拋出一個異常。git
那麼add方法和offer方法有何不一樣?經過循環,把字母移動相對應的密鑰的數位,造成新的字符。
根據其在ASCII表中的位置,相對應的移動幾位,造成新的字符。程序員
encodingQueue.add(keyValue);
好比密鑰是{5,12,-3,8,-9,4,10}
一次循環返回後便是{12,-3,8,-9,4,10,5}
一樣,能夠編碼任何字符數組
front
;另外一個引用指向鏈表的末結點,我定義爲rear
。同時,鏈表中的每一個結點都應該存有兩個引用。一個指向上一個元素,一個指向下一個元素。因此,咱們須要從新定義一個結點類。public T dequeue() throws EmptyCollectionException { if (isEmpty()) throw new EmptyCollectionException("queue"); T result = queue[front]; queue[rear] = null; front = (front+1) % queue.length; count--; return result; }
測試類中,老是刪除隊尾的元素。數據結構
queue[front] = null
意思是把隊列首端設置爲空。這裏的隊列首端並不固定在數組的0索引處,因此也不能經過刪除索引0的元素來達到dequeue的操做。一些接口在jsjf文件夾中。
單元測試
盡信書則不如無書。新的java教材有不少翻譯不恰當和代碼問題,在對書上內容的理解上會有很大的誤差。可是咱們沒法改變書本的好壞,與其抱怨,只能多花時間明白其錯誤在哪裏,杜絕掉其中的代碼錯誤,由於每每是由於一個變量錯誤,結果就是千差萬別。因此,注意細節,是每一個程序員必備的覺悟和素質。代碼如此,人亦如此。學習
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 0/0 | 1/1 | 10/10 | |
第二週 | 610/610 | 1/2 | 20/30 | |
第三週 | 593/1230 | 1/3 | 18/48 |
目前水平(0~9) | 課程結束後水平(0~9) | |
---|---|---|
程序理解 | 3 | 8 |
代碼規範/質量 | 5 | 9 |
單元測試/代碼覆蓋率 | 4 | 8 |
模塊實現/逐步細化 | 5 | 9 |
自主學習能力 | 6 | 8 |
協同工做 | 5 | 9 |
現階段,代碼的理解和實現使咱們須要提升的關鍵。更好的理解書上的代碼能夠幫助咱們應用更多的場景模式。而代碼實現的質量則須要日漸積累,這不是一蹴而就的。細節的成敗,一樣是影響代碼的質量,這更應該使咱們所要避免的。咱們應該對咱們編寫的每一份代碼負責。測試