JavaRush /Java Blog /Random-KO /커피 브레이크 #129. LinkedList와 ArrayList의 차이점은 무엇입니까? Java 19에...

커피 브레이크 #129. LinkedList와 ArrayList의 차이점은 무엇입니까? Java 19에 추가되는 새로운 기능

Random-KO 그룹에 게시되었습니다

LinkedList와 ArrayList의 차이점은 무엇입니까?

출처: Rrtutors.com Java 프로그래밍을 처음 접하는 경우 컬렉션 작업 시 LinkedList 또는 ArrayList 중 어느 것을 사용하는 것이 더 좋은지 궁금할 것입니다. 이 두 클래스는 모두 유사한 기능을 수행하므로 때로는 작업에 어느 클래스를 사용하는 것이 더 나은지 결정하기 어려울 수 있습니다. 이번 포스팅에서는 두 클래스의 차이점을 정의하고 이를 언제 어디서 사용해야 하는지 논의하겠습니다. 커피 브레이크 #129.  LinkedList와 ArrayList의 차이점은 무엇입니까?  Java 19 - 1에 추가되는 새로운 기능

Java의 ArrayList와 LinkedList의 차이점

기준에 따라 ArrayList와 LinkedList를 비교해 보겠습니다.

시장 조작

두 경우 모두 배열 조작 속도에 차이가 있습니다. ArrayList는 LinkedList보다 배열을 조작하는 속도가 느립니다. 이는 LinkedList가 노드 기반이고 비트 이동이 많이 필요하지 않기 때문입니다.

입장

ArrayList는 데이터를 더 빠르게 저장하고 검색합니다. 반면 LinkedList는 더 빠른 데이터 처리를 지원합니다.

구현

ArrayList는 목록만 구현하는 반면 LinkedList는 목록과 대기열을 모두 구현합니다. LinkedList는 종종 대기열로도 사용됩니다.

내부 구현

ArrayList는 해당 요소를 동적 배열에 저장하는 반면 LinkedList는 이중 연결 목록을 사용합니다.

ArrayList와 LinkedList를 언제 사용합니까?

ArrayList는 읽기 전용 컬렉션 작업에 적합한 반면 LinkedList는 추가 및 삭제와 같은 다양한 데이터 수정을 허용하는 컬렉션 작업에 적합합니다.

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 가상 스레드, 스위치 명령문에 대한 패턴 일치, 벡터 API 및 Linux/RISC-V 포트는 모두 단기 지원이 포함된 새로운 언어 릴리스인 Java 19에서 올 9월에 출시될 예정입니다. 또한 Java Development Kit 19에는 최근 데이터 탐색 및 처리를 위한 레코드 패턴 미리보기라는 또 다른 기능이 도입되었습니다. Java 언어를 개선하기 위한 지속적인 계획의 일환으로 JDK 19, 즉 Java 19에는 제네릭부터 값 개체까지 수많은 기능이 포함될 가능성이 있습니다. JDK 19는 2022년 3월 22일에 도입된 JDK 18의 다음 업데이트입니다. Java의 표준 버전은 6개월마다 출시됩니다. 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에 도입된 인스턴스 오브 패턴 매칭을 기반으로 합니다. 또한 향후 계획에서는 배열 템플릿 및 가변 인수 템플릿과 같은 기능을 사용하여 레코드 템플릿을 확장해야 할 수도 있습니다. 템플릿 항목은 소규모 성능 지향 Java 기능을 탐색하고 개발하는 것을 목표로 하는 Project Amber 의 일부입니다.

  • 외계인 기능 미리보기 및 메모리 API . Java 프로그램이 Java 런타임 외부의 코드 및 데이터와 상호 작용할 수 있도록 하는 API를 소개합니다.

    외부 기능(Java 런타임 외부 코드)을 효율적으로 호출하고 외부 메모리(JVM에서 관리하지 않는 메모리)에 안전하게 액세스함으로써 API를 사용하면 Java 프로그램이 JNI에 대한 위협 없이 네이티브 라이브러리를 호출하고 네이티브 데이터를 처리할 수 있습니다. ).

  • 가상 스레드 미리보기 . 이 제품에는 고성능 병렬 애플리케이션을 작성, 유지 관리 및 모니터링하는 노력을 크게 줄여주는 경량 스레드가 도입되었습니다. 제안의 아이디어는 하드웨어를 최적으로 사용하여 요청당 간단한 스레드 스타일로 작성된 서버 애플리케이션을 확장할 수 있는 기능을 제공하는 것입니다. 이를 통해 최소한의 변경으로 java.langThread API를 사용하는 코드에 가상 스레드를 구현할 수 있으며 기존 JDK 도구를 사용하여 가상 스레드 문제를 해결, 디버깅 및 프로파일링할 수 있습니다.

  • 표현식 및 스위치 문에 대한 패턴 일치 의 세 번째 미리보기입니다 . 이는 패턴 일치를 확장하여 각각 특정 작업이 있는 여러 패턴에 대해 표현식을 테스트할 수 있도록 전환합니다. 이를 통해 복잡한 데이터 중심 쿼리를 간결하고 안전하게 표현할 수 있습니다. 이 기능은 이전에 JDK 17 및 JDK 18에서 미리 보기로 제공되었습니다. 세 번째 미리 보기에는 protected when 패턴을 스위치 블록의 절로 바꾸는 것을 포함하여 개선 사항이 추가됩니다. 스위치 표현과 연산자의 표현성과 적용성을 확대하자는 취지다.

  • 벡터 API의 네 번째 인큐베이션에서는 런타임 시 지원되는 프로세서 아키텍처에서 최적의 벡터 명령으로 안정적으로 컴파일되는 벡터 계산을 표현합니다. 이는 동등한 스칼라 계산보다 더 나은 성능을 제공합니다. 새로운 API를 사용하는 개발자는 HotSpot의 자동 벡터화 기능을 사용하여 Java로 복잡한 벡터 알고리즘을 작성할 수 있지만 벡터화를 더욱 예측 가능하고 안정적으로 만드는 사용자 정의 모델을 사용할 수 있습니다. Vector API는 이전에 JDK 16, JDK 17 및 JDK 19에서 배양되었습니다.

    벡터 API에 대한 또 다른 추가 사항으로 비트별 적분 레인 전체 연산이 확장되어 1비트 수 계산, 비트 순서 반전, 비트 압축 및 확장과 같은 연산을 포함하게 됩니다.

  • Linux/RISC-V 포트를 통해 Java는 이미 다양한 언어 툴킷에서 지원되는 하드웨어 명령어 세트 지원을 받게 됩니다. RISC-V는 관련 ISA 제품군입니다. Linux/RISC-V 포트는 벡터 명령어를 포함하는 64비트 범용 ISA인 RV64GV RISC-V 구성만 지원합니다.

    포트는 템플릿 해석기, JIT 컴파일러 C1(클라이언트), JIT 컴파일러 C2(서버) 및 ZGC 및 Shenandoah를 포함한 모든 현재 주요 가비지 수집기 등 HotSpot 가상 머신 옵션을 지원합니다.

JDK 18과 마찬가지로 JDK 19도 6개월간 지원되는 단기 릴리스입니다. 이전 릴리스인 JDK 17은 수년간 지원이 보장되는 LTS 릴리스였습니다. 2021년 9월 14일에 도입되었습니다.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION