LinkedList və ArrayList arasındakı fərq nədir?
Mənbə: Rrtutors.com Əgər siz Java proqramlaşdırmasında yenisinizsə, kolleksiyalarla işləyərkən hansının daha yaxşı olduğunu düşünməlisiniz: LinkedList və ya ArrayList. Bu siniflərin hər ikisi oxşar funksiyaları yerinə yetirir, buna görə də işinizdə hansının istifadə etməyin daha yaxşı olduğuna qərar vermək bəzən çətin ola bilər. Bu yazıda biz iki sinif arasındakı fərqləri müəyyən edəcəyik və onlardan harada və nə vaxt istifadə edəcəyimizi müzakirə edəcəyik.Java-da ArrayList və LinkedList arasındakı fərq
ArrayList və LinkedList-i meyarlarına əsasən müqayisə edək:Manipulyasiya
Hər iki halda massiv manipulyasiya sürətində fərq var. ArrayList massivləri idarə etmək üçün LinkedList-dən daha yavaşdır. Bu, LinkedList-in qovşaq əsaslı olması və çox az dəyişmə tələb etməməsi ilə əlaqədardır.Giriş
ArrayList məlumatları daha sürətli saxlayır və əldə edir. Digər tərəfdən, LinkedList daha sürətli məlumat emalını dəstəkləyir.İcra
ArrayList yalnız siyahı tətbiq edir, LinkedList isə həm siyahı, həm də növbəni həyata keçirir. LinkedList də tez-tez növbə kimi istifadə olunur.Daxili icra
ArrayList öz elementlərini dinamik massivdə saxlayır, LinkedList isə ikiqat əlaqəli siyahıdan istifadə edir.ArrayList və LinkedList-dən nə vaxt istifadə edilməlidir?
ArrayList yalnız oxunan kolleksiya ilə işləmək üçün, LinkedList isə əlavə etmək və silmək kimi müxtəlif məlumat dəyişikliklərinə imkan verən kolleksiya ilə işləmək üçün uyğundur.LinkedList nümunəsi:
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);
}
}
ArrayList nümunəsi:
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-da gələn yeni xüsusiyyətlər
Mənbə: InfoWorld Virtual mövzular, keçid ifadələri üçün nümunə uyğunluğu, vektor API və Linux/RISC-V portu bu ilin sentyabrında qısamüddətli dəstəyi olan dilin yeni buraxılışı Java 19-da təqdim olunacaq. Bundan əlavə, Java Development Kit 19 bu yaxınlarda başqa bir xüsusiyyət təqdim etdi: məlumatların naviqasiyası və emalı üçün Record nümunələrinə ön baxış. Java dilini təkmilləşdirmək üçün davam edən planın bir hissəsi olaraq, JDK 19 və ya sadəcə Java 19, generiklərdən tutmuş dəyər obyektlərinə qədər çoxlu funksiyaları ehtiva etmək potensialına malikdir. JDK 19, 22 mart 2022-ci ildə təqdim edilən JDK 18-dən sonra növbəti yeniləmə olacaq. Java-nın standart versiyası altı aydan bir buraxılır. OpenJDK tərtibatçıları JDK 19-un rəsmi buraxılış cədvəlini dərc ediblər. Buna əsasən, stabil buraxılış sentyabrın 20-də çıxacaq. Bundan əvvəl tərtibatçılar 9 iyun və 21 iyulda buraxılacaq ilkin quruluşlarla tanış ola biləcəklər. Buraxılış namizədləri avqustun 11-də və 25-də dərc olunacaq. JDK 19-un erkən çıxışı jdk.java.net/19 saytında mövcuddur . JDK 19-da təklif olunan xüsusiyyətlərə aşağıdakılar daxildir:-
Предварительный просмотр шаблонов записей для разбора значений записей. Шаблоны записей и шаблоны типов могут быть вложены друг в друга, чтобы обеспечить декларативную, мощную и компонуемую форму навигации и обработки данных. Идея этой функции состоит в том, чтобы добавить расширение сопоставления шаблонов для выражения более сложных составных requestов данных без изменения синтаксиса or семантики шаблонов типов. Это предложение основано на сопоставлении шаблонов для instanceof, представленном в JDK 16 в марте 2021 года. Далее, в будущих планах может потребоваться расширение шаблонов записей с помощью таких возможностей, How шаблоны массивов и vararg-шаблоны. Запись шаблонов является частью Project Amber, направленного на изучение и развитие небольших функций Java, ориентированных на производительность.
-
Предварительный просмотр чужой функции и API памяти. Он представит API, с помощью которого Java-программы смогут взаимодействовать с codeом и данными вне среды выполнения Java.
Благодаря эффективному вызову внешних функций (codeа вне среды выполнения Java) и безопасному доступу к внешней памяти (памяти, не управляемой JVM) API позволит программам Java вызывать собственные библиотеки и обрабатывать собственные данные без Howой-либо опасности для Java Native Interface (JNI).
-
Предварительный просмотр виртуальных потоков (virtual threads). Это предложение представляет собой облегченные потоки, которые значительно сокращают усorя по написанию, обслуживанию и наблюдению за высокопроизводительными параллельными applicationsми. Идея предложения состоит в обеспечении возможности масштабирования serverных приложений, написанных в простом стиле “поток на request” (thread-per-request) с оптимальным использованием оборудования. Это позволит внедрять в code, использующий java.langThread API, виртуальные потоки с минимальными изменениями, а также устранять неполадки, выполнять отладку и профorрование виртуальных потоков с помощью существующих инструментов JDK.
-
Третья предварительная version сопоставления шаблонов для выражений и операторов switch. Она расширяет сопоставление шаблонов (pattern matching) до switch, чтобы позволить тестировать выражение по ряду шаблонов, каждый из которых имеет определенное действие. Благодаря этому сложные requestы, ориентированные на данные, могут быть выражены лаконично и безопасно. Эта функция ранее была предварительно представлена в JDK 17 и JDK 18. В третьей предварительной версии будут добавлены улучшения, включая замену защищенных шаблонов when предложениями в switch-блоках. Идея предложения состоит в расширении выразительности и применимости switch-выражений и операторов.
-
Vektor API-nin dördüncü inkubasiyası, dəstəklənən prosessor arxitekturalarında optimal vektor təlimatlarına icra zamanı etibarlı şəkildə tərtib edən vektor hesablamalarını ifadə edəcək. Bu, ekvivalent skalyar hesablamalardan daha yaxşı performans təmin edəcək. Yeni API-dən istifadə edən tərtibatçılar HotSpot-un avtovektorlayıcısından istifadə edərək Java-da mürəkkəb vektor alqoritmlərini yaza biləcəklər, lakin vektorlaşdırmanı daha proqnozlaşdırıla bilən və etibarlı edən xüsusi modellə. Vector API əvvəllər JDK 16, JDK 17 və JDK 19-da inkubasiya edilmişdi.
Vektor API-yə başqa bir əlavə olaraq, bitwise inteqral zolaqlı əməliyyatlar bir bitin sayını hesablamaq, bit sırasını tərsinə çevirmək və bit sıxışdırmaq və genişləndirmək kimi əməliyyatları əhatə edəcək şəkildə genişləndiriləcəkdir.
-
Linux/RISC-V portu ilə Java geniş dil alət dəstləri tərəfindən artıq dəstəklənən aparat təlimat dəsti dəstəyi əldə edəcək. RISC-V əlaqəli BBS ailəsidir. Linux/RISC-V portu yalnız RV64GV RISC-V konfiqurasiyasını, vektor təlimatlarını ehtiva edən 64 bitlik ümumi təyinatlı ISA-nı dəstəkləyəcək.
Liman aşağıdakı HotSpot virtual maşın seçimlərini dəstəkləyəcək: şablon tərcüməçisi, C1 JIT kompilyatoru (müştəri), C2 JIT tərtibçisi (server) və ZGC və Shenandoah daxil olmaqla, bütün cari əsas zibil kollektorları.
GO TO FULL VERSION