[Java] List & ArrayList & LinkedList

G·2024년 6월 23일
0

Java

목록 보기
21/21

리스트

  1. List
  2. ArrayList
  3. LinkedList

✍️ List

✏️  List 란?

  • List는 Java의 컬렉션 프레임워크에서 제공하는 인터페이스로, 순서가 있는 데이터의 집합을 나타냅니다.
  • 중복된 요소를 허용하며, 인덱스를 통해 요소에 접근할 수 있습니다.
  • 배열은 미리 크기를 지정하고 데이터를 저장하는 반면, List는 크기가 가변적이므로 데이터의 추가 및 삭제에 용이합니다.

✏️  List 선언

List list = new ArrayList(); // --- 1️⃣
List<String> list = new ArrayList<>(); // --- 2️⃣
  • Generics < > 기능을 활용하면 List에 저장되는 데이터 타입 지정이 가능합니다.
  • 1️⃣ : Generics를 사용하지 않으면 모든 데이터를 저장할 수 있습니다.
  • 2️⃣ : Generics를 사용한다면 해당 타입의 값만 저장이 가능합니다.

    ❓List 선언 시, new List 가 아닌 new ArrayList 로 업캐스팅하는 이유

    💡 업캐스팅(UpCasting): 자식 클래스가 부모 클래스 타입으로 캐스팅되는 것

    👉 List는 Collection을 상속 받은 Interface이고, ArrayList는 List를 상속 받은 Class입니다. ❗️❗️❗️❗️❗️❗️❗️ 작성중 ❗️❗️❗️❗️❗️❗️❗️


✍️ ArrayList

✏️  ArrayList 란?

  • ArrayListList 인터페이스를 구현한 클래스 중 하나로, 내부적으로 배열을 사용하여 데이터를 저장합니다.
  • List 와 마찬가지로 크기가 고정되어 있지 않으며, 필요에 따라 크기를 자동으로 조절합니다.
  • 인덱스를 통해 요소에 접근하여 연산이 매우 빠릅니다.
  • 중간에 요소를 추가하거나 삭제하는 잡업에서는 ( 데이터가 연속적으로 리스트에 있어야 하며 중간에 빈공간이 있으면 안되어 ) 해당 위치 이후의 모든 요소를 이동해야 하기 때문에 작업이 느립니다.

✏️  ArrayList 선언

ArrayList arrayList = new ArrayList(); // --- 1️⃣
ArrayList<Integer> intArrayList = new ArrayList<Integer>(); // --- 2️⃣
ArrayList<Integer> intArrayList = new ArrayList<>(); // --- 3️⃣
  • 1️⃣ : 타입 미설정 시, Object로 선언됩니다.
       하지만 이렇게 선언할 경우 값을 추출하기 위해서는 캐스팅 (Casting) 연산이 필요하고
       잘못된 타입으로 캐스팅 할 경우 에러가 발생하므로 추천하지 않습니다.
  • 2️⃣ : 타입 설정 시, int 타입으로만 사용이 가능합니다.
  • 3️⃣ : new 에서 타입 파라미터는 생략이 가능합니다.


✍️ LinkedList

✏️  LinkedList 란?

  • LinkedListList 인터페이스를 구현한 클래스 중 하나로, 내부적으로 이중 연결 리스트를 사용하여 요소를 저장합니다.
  • 각 요소는 노드로 구성하며, 각 노드는 이전 노드와 다음 노드를 가리키는 참조를 가집니다.
profile
기!술! 블로그

0개의 댓글