-
arraylist arr = new arraylist() 宣告乙個列表變數 arr 並例項化。
將 username 變數新增到 arr 中,現在列表中的第乙個位置是 username。
將 password 變數新增到 arr 的 username 之後。
loginhandler lh = new loginhandler();
宣告 loginhandler、lh 型別的變數並例項化。
user loginuser = ;
宣告乙個 user loginuser 型別的變數,以接收 loginhandler 類中的 checklogin 方法返回的結果。 arr 作為引數傳遞給 checklogin 方法。
-
問:ArrayList 的底層實現是什麼?
答:底層實現是乙個陣列,在 ArrayList 中定義了乙個陣列來儲存物件。
問:arraylist 的預設容量是多少? new ArrayList<>(指定容量和不指定容量有什麼區別?
答:預設容量為 10。 呼叫預設建構函式時,將大小為 0 的空陣列分配給 elementdata,並且當首次新增元素時,該陣列將擴充套件為預設 capacity(10)。
當指定的容量初始化到 arraylist 時,會給 elementdata 分配乙個 initialcapacity 大小的陣列,當新增第乙個元素時,如果 initialcapacity 小於預設容量,則該陣列將擴充套件到預設容量
Q:ArrayList 的擴容機制是什麼? 什麼時候進行擴張?
答:有兩種情況。
問:版本和版本有什麼區別?
a:版本在初始化時建立乙個 10 的陣列; 該版本在初始化時建立乙個空陣列,當首次新增元素時,該陣列將縮放到 10
問:arraylist 執行緒安全嗎?
A:不安全,如果需要執行緒安全,那就用vector,copyorwritearraylist,q:arraylist在新增和刪除時效率如何?
答:視情況而定,當尾部插入時,如果容量不擴大,效率高; 當非尾堵或尾堵需要擴充套件時,效率會降低,因為這兩種情況都涉及陣列的副本。
問:ArrayList 和 LinkedList 有什麼區別?
答:基本相當於乙個陣列和乙個鏈結的區別,陣列是固定大小的,需要連續的記憶體空間,查詢快,增刪慢; 鏈結不需要連續的記憶體空間,它們在邏輯上是連續的,查詢速度慢,新增和刪除速度快。 兩者都是執行緒不安全的。
遍歷性能優於 LinkedList,因為 CPU 內部的快取結構快取了連續的記憶體碎片,大大降低了讀記憶體的效能消耗。
問:arraylist 適合排隊嗎?
答:不可以。 佇列是FIFO,先進先出,陣列用作佇列,這需要從頭到尾或頭到尾插入尾部,這將涉及陣列的複製,這是非常耗費效能的。
問:初始化陣列列表時是否需要指定初始容量?
答:容量小於10,不需要,大於10時最好指定容量。
-
答:陣列的容量是固定的,而陣列列表或列表的容量可以根據需要自動擴充套件。 如果更改。
容量屬性、記憶體重新分配和元素複製可以自動執行。
ArrayList 和 List 提供了新增、插入或刪除 range 元素的方法。 在陣列中,您只能執行一次。
獲取或設定元素的值。
使用 synchronized 方法建立 arraylist 或列表的同步版本很容易。 array 也將同步。
這取決於使用者。
ArrayList 和 List 提供了將唯讀包裝器和固定大小包裝器返回到集合的方法; 而 Array 則沒有。
另一方面,Array 為 ArrayList 提供了一定的靈活性,並且 ArrayList 中缺少流動性英畝。 例如:
您可以設定陣列的下限,但陣列列表或列表的下限以零開始和結束。
陣列可以有多個維度,而陣列列表或列表始終只是一維的。
由於 ArrayList 的元素屬,特定型別的陣列(不包括物件)的效能優於 ArrayList。
物件型別,因此在儲存或檢索值型別時通常會進行裝箱和取消裝箱。 然而,在不必要的。
當涉及到重新分配時(即初始容量非常接近列表的最大容量),列表的效能比同型別的陣列高十分。
類似。 大多數需要陣列的情況都可以改用; 它們更易於使用,並且通常具有相同的相位。
相同型別的埋地陣列具有相似的效能。
array 位於 system 命名空間中; arraylist 位於命名空間中; 列表位於。
命名空間。
字串只是乙個字串陣列。
-
1.陣列型別的變數必須在宣告它們的同時例項化(至少初始化陣列的大小),而 arraylist 可以先宣告。
2.陣列只能儲存同構物件,而 ArrayList 可以儲存異構物件。
同態物件是同一型別的物件,例如宣告為 int 和字串的陣列只能儲存字元資料,但宣告為物件的陣列除外。
ArrayList 可以儲存任何不同型別的資料(因為它包含裝箱的物件型別物件,這些物件實際上由 ArrayList 在內部使用)。"object items;"這樣的私有欄位來封裝物件)。
3 如何儲存在 CLR 託管對中。
陣列始終是連續儲存的,而陣列列表不一定是連續儲存的。
4 初始化大小。
陣列物件的初始化只需要指定,建立後陣列的大小是固定的,而陣列列表的大小可以動態指定,其大小可以在初始化時指定,也可以不指定,即物件的空間可以任意增加。
5 Arrays 不能隨意新增和刪除專案,而 ArrayList 可以在任何地方插入和刪除專案。
array 和 arraylist 之間的相似之處。
1 都有乙個索引,即可以通過索引直接獲取和修改任何專案。
2 他們建立的物件被放置在託管堆中。
3 能夠列舉自身 (因為它們都實現 IENUMERABLE 介面) 。
ArrayList 的一些功能。
ArrayList 的 capacity 屬性的值會根據 ArrayList 中項的實際大小而變化。
您可以使用 arraylist 類的 trimtoresize() 方法從 arraylist 例項中刪除空項以減少音量。
在 C 語言中,建議嘗試使用 Paradigm Edition 的 ArrayList,即命名空間中的列表,這樣既保證了型別安全,又因為沒有裝箱和拆箱的過程,提高了物件處理的效率。
-
答:陣列的容量是固定的,一次只能獲取或設定乙個元素的值,而陣列列表或列表的容量可以根據需要自動擴充套件、修改、刪除或插入。
陣列可以有多個維度,而 arraylist 或 list
總是只有乙個維度。 但是,您可以輕鬆建立陣列列表或列表列表。 特定型別的陣列(物件除外)的效能優於 ArrayList。 這是因為 arraylist 的元素屬於物件型別; 因此,在儲存或檢索值型別時,通常會發生 bin 和 unbin 操作。 但是,當不需要重新分配時(即初始容量非常接近列表的最大容量),列表
的效能與相同型別的陣列非常相似。 在決定是使用 List 類還是 ArrayList 類(兩者都具有類似的功能)時,請記住 List 類的效能更好,並且在大多數情況下是型別安全的。 如果對列表
類的型別 t 使用引用型別,則這兩個類的行為是相同的。 但是,如果對型別 t 使用值型別,則需要考慮實現和裝箱。 -
List 是乙個介面,而 ArrayList 是乙個類。 ArrayList 繼承並實現 List。
list list = new arraylist();這句話建立乙個 arraylist 物件並將其追溯到列表。 此時,它是乙個列表物件,以及 ArrayList 具有但列表沒有的一些屬性和方法,因此不能再使用它。 和 arraylist list=new arraylist(); 建立物件將保留 arraylist 的所有屬性。
為什麼通常使用 list list = new arraylist() 而不是 arraylist alist = new arraylist()?
問題是 List 有多個實現類,比如 LinkedList 或者 Vector 等,現在你用的是 ArrayList,也許有一天你需要切換到不同的實現類呢? ,在這種情況下,您只需要更改此行: list list = new linkedlist(); 其他使用列表位置的**根本不需要更改。
假設您從 ArrayList alist = new ArrayList() 開始,並且您已經更改了其中的一些,尤其是在您使用特定於 ArrayList 的方法和屬性時。 如果你沒有特殊需求,最好使用 list list = new linkedlist(); 方便程式的重構。 這就是面向介面程式設計的好處。
-
list list = new arraylist();
等號的左邊是編譯時型別(即,列表只能在程式不執行時用作列表型別)。
等號的右側被視為執行時型別(即,JVM 在程式執行時會將 List 視為 ArrayList 型別)。
-
第一種方法宣告的列表只能呼叫在 list 介面中宣告的方法,而第二種方法宣告的列表可以使用特定於 arraylist 類的方法。
-
List 是介面,ArrayList 是實現類。
後者沒有錯,但一般推薦前者。