List<E> 인터페이스를 구현하는 컬렉션 클래스들

gustjtmd·2022년 1월 10일
0

Java

목록 보기
19/40
리스트 기반 자료구조는 열차 칸을 더하고 빼는 형태의 자료구조이다.
  • 인스턴스 저장 : 열차 칸을 하나 더한다,
  • 인스턴스 삭제 : 해당 열차 칸을 삭제한다.
List<E> 인터페이스를 구현하는 대표적인 컬렉션 클래스 둘은 다음과 같다.
- ArrayList<E> : 배열 기반 자료구조, 배열을 이용하여 인스턴스 저장
- LinkedList<E> : 리스트 기반 자료구조, 리스트를 구성하여 인스턴스 저장
  
이 둘은 기능적 측면에서 보면 완전히 동일하나 인스턴스 저장하는 방식에 차이가 있어 이로인한 
장단점이 각각 존재한다.
  
그리고 List<E> 인터페이스를 구현하는 공통적인 특성 두가지가 있는데
1. 인스턴스의 저장 순서를 유지한다.
2. 동일한 인스턴스의 중복 저장을 허용한다.

List 자료구조의 구성

배열 기반의 자료구조이지만 공간의 확보 및 확장은 ArrayList 인스턴스가 스스로 처리한다!
ArrayList.

import java.util.ArrayList;
import java.util.List;

public class ArrayListCollection {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>(); // 컬렉션 인스턴스 생성

        //컬렉션 인스턴스에 문자열 인스턴스 저장
        list.add("Toy");
        list.add("Box");
        list.add("Robot");

        //저장된 문자열 인스턴스 참조
        for(int i =0; i < list.size(); i++)
            System.out.print(list.get(i)+'\t');
        System.out.println();

        list.remove(0);  //첫 번째 인스턴스 삭제

        //첫 번째 인스턴스 삭제 후 나머지 인스턴스들을 참조
        for(int i=0; i< list.size();i++)
            System.out.print(list.get(i) + '\t');
        System.out.println();
    }
}
실행결과
Toy	Box	Robot	
Box	Robot	
LinkedList.

public class LinkedListCollection {
    public static void main(String[] args) {
        List<String> list = new LinkedList<>(); //유일한 변화
        
        list.add("Toy");
        list.add("Box");
        list.add("Robot");
        
        for(int i =0; i < list.size(); i++)
            System.out.print(list.get(i)+'\t');
        System.out.println();

        list.remove(0);  
        
        for(int i=0; i< list.size();i++)
            System.out.print(list.get(i) + '\t');
        System.out.println();
    }
}
실행결과
Toy	Box	Robot	
Box	Robot
ArrayList vs LinkedList

ArrayList의 장단점

  • 장점 : 저장된 인스턴스의 참조가 빠르다
  • 단점 : 저장 공간을 늘리는 과정에서 시간이 많이 소요되고 인스턴스 삭제 과정에서 많은 연산이 필요할 수 있다. 따라서 느릴수 있음.

LinkedList의 장단점

  • 장점 : 저장 공간을 늘리는 과정이 간단하고 저장된 인스턴스 삭제 과정이 단순하다.
  • 단점 : 저장된 인스턴스 참조 과정이 배열에 비해 복잡하다 따라서 느릴수 있다.
profile
반갑습니다

0개의 댓글