集合類學習反思 10 14

2021-09-28 15:21:10 字數 2191 閱讀 2504

1.list是有序、可重複的(有序是因為底層實現是陣列,有下標。可重複是滿足equals();返回值為true)。set是無序的不可重複的。collection裡面包含的方法在set和list中都有。

2.arraylist索引相關的順序方法:因為他底層是陣列實現的,所以可以進行索引。實際上鍊表實現的也可以進行索引,只是效率比較低下。

arraylist裡面提供了set、add、get等方法用以對集合裡面的元素進行查詢等操作。這個不用刻意的記憶,只需要知道集合裡面提供了很多操作方法可以對集合進行操作就好了。如果以後遇到需要用集合操作的,查詢集合裡面存在的方法。用到其它的類也是,自己腦袋裡面有想實現的方法,先看類裡面有沒有,有相似的再進行重寫。

set();是直接替換指定位置的元素,add是指定位置插入乙個元素,其他元素往後移。(為什麼可以實現在陣列中插入乙個元素,效率不會很低嗎?如果選擇插入或者刪除使用鍊錶會更好)

3.list中的常用實現類有arraylist(執行緒不安全,使用較多)、vector(執行緒安全)、linkedlist。底層實現分別是陣列、陣列、鍊錶。

4.思考:左移右移是個啥?可以提高效率,但是是怎麼做的呢?

位運算右移一位相當於翻倍,左移一位相當於減半。是對相應的數值轉換成二進位制然後再進行左右以為運算。>>右移,《左移。

在數字沒有溢位的前提下,對於正數和負數,左移一位都相當於乘以2的1次方,左移n位就相當於乘以2的n次方

5.arraylist中陣列的長度是沒有限制的,本質上是有長度限制的,只是每次儲存的時候都會進行檢測,如果超出長度則擴容一半,把原陣列拷貝到新陣列上面去實現擴容。刪除、插入的原理都是陣列的拷貝,牽一發動全身,故效率會比較低下。

6.為什麼要重寫tostring方法呢?

tostring()是object的方法,object是所有類的父類,因此所有類中都有tostring方法,該方法原先的返回值是類名+@+記憶體位址(雜湊值)【getclass().getname() + 「@」 +integer.tohexstring(hashcode());】,如果期望得到乙個類的值就需對tostring()進行重寫,如果某類沒有重寫tostring()方法,這時呼叫tostring()將得到(類名+位址名)這樣的字串。

idea中也有快捷鍵對tostring()、equals()等方法進行重寫,筆記本上fn+alt+insert。

注意:列印乙個物件,可以直接system.out.println§;其實println方法內部會自動呼叫p 的 tostring() 方法。

7.刪除有時等同於覆蓋。陣列拷貝的時候新陣列覆蓋原陣列相當於刪除;陣列新增元素的時候後面的一串元素覆蓋待刪除的乙個或者多個相當於刪除;鍊錶中刪除元素也是同樣的道理。

8.陣列本身有界但是要想實現無限對的陣列,進行擴容操作就可以。

9.set、get方法有什麼作用呢?

因為設定的變數或者方法可能是私有的,不能進行直接訪問,需要使用set、get方法進行訪問變數或者方法。私有成員函式或者變數是不是可以使用反射機制進行訪問嗯?反射機制又是什麼呢?

10.為什麼要設定泛型?

通過泛型可以定義型別安全的資料結構(型別安全),而無須使用實際的資料型別(可擴充套件)。這能夠顯著提高效能並得到更高質量的**(高效能),因為您可以重用資料處理演算法,而無須複製型別特定的**(可重用)。

11.執行時異常有哪些?執行時異常是交給使用者自己處理的嗎?

陣列越界、被除數為0、空指標異常等等。當程式中可能出現這類異常,要麼用try-catch語句捕獲它,要麼用throws子句宣告丟擲它,否則編譯不會通過。

常見runtimeexception:

arraystoreexception                試圖將錯誤型別的物件儲存到乙個物件陣列時丟擲的異常

classcastexception                試圖將物件強制轉換為不是例項的子類時,丟擲該異常

illegalargumentexception         丟擲的異常表明向方法傳遞了乙個不合法或不正確的引數

indexoutofbound***ception   指示某排序索引(例如對陣列、字串或向量的排序)超出範圍時丟擲

nosuchelementexception       表明列舉中沒有更多的元素

nullpointerexception                當應用程式試圖在需要物件的地方使用 null 時,丟擲該異常

Java 集合類學習

繼承關係圖 1 list 有序 索引 可重複 list裡存放的物件是有序的,同時也是可以重複的,list關注的是索引,擁有一系列和索引相關的方法。arraylist 陣列 快速訪問 arraylist可以理解成乙個可增長的陣列,因此可以通過索引快速訪問。linkedlist 鍊錶 快速插入 刪除 l...

java集合學習之 常用集合類

collection介面下包括 list結構的集合類 arraylist類,linkedlist類,vector類,stack類 set結構的集合類 hashset類,treeset類,linkedhashset實現類 queue結構的集合 priorityqueue類 map介面下包括 map結構...

Guava學習 集合類BiMap

bimap繼承自map,實現了常規map的所有功能,但是它除了要求key唯一之外,還要求value也必須唯一。因為他維持了key value和value key的雙向對映。有這樣的乙個場景,戶主與他所居住位址,排除土豪的情況下,這是乙個雙向對映。system.out.println for addr...