LinkedList 和 ArrayList 有什麼不同?
來源:Rrtutors.com 如果您是 Java 程式設計新手,您一定想知道在處理集合時使用哪個更好:LinkedList 或 ArrayList。這兩個類別都執行類似的功能,因此有時很難決定在工作中更適合使用哪一個。在這篇文章中,我們將定義這兩個類別之間的差異,並討論何時何地使用它們。Java中ArrayList和LinkedList的差別
讓我們根據它們的標準來比較 ArrayList 和 LinkedList:操縱
在這兩種情況下,數組操作的速度都存在差異。ArrayList 操作陣列的速度比 LinkedList 慢。這是因為 LinkedList 是基於節點的,不需要太多的位移。使用權
ArrayList 儲存和檢索資料的速度更快。另一方面,LinkedList 支援更快的資料處理。執行
ArrayList僅實作列表,而LinkedList同時實作列表和佇列。LinkedList也常被用作佇列。內部實施
ArrayList 將其元素儲存在動態陣列中,而 LinkedList 使用雙向鍊錶。什麼時候使用ArrayList和LinkedList?
ArrayList適合使用唯讀集合,而LinkedList適合使用允許各種資料修改(例如新增和刪除)的集合。鍊錶例:
import java.util.LinkedList;
import java.util.List;
public class LinkeddExample {
public static void main(String[] args) {
List<String> myGroup=new LinkedList<>();
myGroup.add("Pohekar");
myGroup.add("Sumedh");
myGroup.add("Nikir");
System.out.println("Create Group: "+myGroup);
myGroup.remove("Pohekar");
System.out.println("Remove Group element: "+myGroup);
myGroup.set(1,"Niha");
System.out.println("Modify Group: "+myGroup);
}
}
數組列表範例:
import java.util.ArrayList;
import java.util.List;
public class ArrayListExca {
public static void main(String[] args) {
List<String> Pro=new ArrayList<>();
Pro.add("PythonPro");
Pro.add("JavaPro");
Pro.add("C#Pro");
System.out.println("Traversing ArrayList...");
for(String s:Pro){
System.out.println(s);
}
}
}
JDK 19:Java 19 中的新功能
來源:InfoWorld 虛擬執行緒、switch 語句的模式比對、向量 API 和 Linux/RISC-V 連接埠都將於今年 9 月在 Java 19 中推出,Java 19 是該語言的新版本,提供短期支援。此外,Java Development Kit 19 最近也引入了另一個功能:預覽資料導航和處理的記錄模式。作為正在進行的 Java 語言改進計劃的一部分,JDK 19(或簡稱 Java 19)有可能包含大量功能,從泛型到值物件。JDK 19 將是繼 2022 年 3 月 22 日推出的 JDK 18 之後的下一個更新。Java 的標準版本每六個月發布一次。OpenJDK 開發者已經公佈了 JDK 19 的官方發佈時間表。據了解,穩定版本將於 9 月 20 日發布。在此之前,開發人員將能夠熟悉將於 6 月 9 日和 7 月 21 日發布的初步版本。候選版本將於 8 月 11 日和 8 月 25 日發布。JDK 19 的早期存取版本可從jdk.java.net/19取得。JDK 19 中提供的功能包括:-
預覽記錄範本以解析記錄值。記錄範本和類型範本可以嵌套,以提供聲明性、強大且可組合的導航和資料處理形式。此功能背後的想法是添加模式匹配擴充功能來表達更複雜的複合資料查詢,而無需更改類型模式的語法或語義。該提案基於 2021 年 3 月 JDK 16 中引入的 instanceof 的模式匹配。此外,未來的計劃可能需要使用陣列範本和可變參數範本等功能來擴展記錄範本。模板條目是Project Amber的一部分,該專案旨在探索和開發小型的、以效能為導向的 Java 功能。
-
Alien 函數預覽和記憶體 API。它將引入一個 API,允許 Java 程式與 Java 運行時以外的程式碼和資料進行互動。
透過有效率地呼叫外部函數(Java 執行時間以外的程式碼)並安全地存取外部記憶體(不由JVM 管理的記憶體),API 將允許Java 程式呼叫本機庫並處理本機數據,而不會對Java 本機介面(JNI) 造成任何威脅。 )。
-
虛擬線程的預覽。該產品引入了輕量級線程,大大減少了編寫、維護和監視高效能並行應用程式的工作量。該提案的想法是提供擴展以簡單的每個請求線程風格編寫的伺服器應用程式的能力,並優化硬體的使用。這將允許您將虛擬執行緒實作到使用java.langThread API 的程式碼中,只需進行最少的更改,並允許您使用現有的 JDK 工具對虛擬執行緒進行故障排除、偵錯和分析。
-
表達式和 switch 語句的模式相符的第三次預覽。它將模式匹配擴展為 switch,以允許針對多個模式測試表達式,每個模式都有一個特定的操作。這使得以資料為中心的複雜查詢能夠簡潔、安全地表達。此功能先前已在 JDK 17 和 JDK 18 中預覽過。第三個預覽版將新增改進,包括以 switch 區塊中的子句取代 protected when 模式。該提案的想法是擴展 switch 表達式和運算符的表達能力和適用性。
-
向量 API 的第四次孵化將表達向量計算,這些計算在運行時可靠地編譯成支援的處理器架構上的最佳向量指令。這將提供比同等標量計算更好的效能。使用新 API 的開發人員將能夠使用 HotSpot 的自動向量化器在 Java 中編寫複雜的向量演算法,但使用自訂模型可以使向量化更加可預測和可靠。Vector API 之前在 JDK 16、JDK 17 和 JDK 19 中孵化。
作為向量 API 的另一項補充,位元積分通道運算將會擴展,包括計算 1 位元的數量、反轉位元順序以及位元壓縮和擴展等操作。
-
透過Linux/RISC-V移植,Java將獲得多種語言工具包已經支援的硬體指令集支援。RISC-V 是一系列相關 ISA。Linux/RISC-V 連接埠僅支援 RV64GV RISC-V 配置,這是包含向量指令的 64 位元通用 ISA。
此連接埠將支援以下 HotSpot 虛擬機器選項:模板解釋器、JIT 編譯器 C1(客戶端)、JIT 編譯器 C2(伺服器)以及目前所有主要垃圾收集器,包括 ZGC 和 Shenandoah。
GO TO FULL VERSION