List

Fox·2023년 12월 15일
post-thumbnail

List란?

정의

List는 Stack, Queue, Tree 등 다른 자료구조에서 활용될 기초 자료구조이다.
배열을 이용하여 구현하면 ArrayList, 연결을 통해 구현하면 LinkedList으로 구현할 수 있다.

  • 가장 처음 데이터를 Head, 마지막 데이터를 Tail이라 한다.
  • 여러 자료가 일직선으로 연결된 선형 구조이다.
  • 데이터의 추가, 삭제가 용이하다

출처 : 해시넷(wiki.hash.kr)

  • 자료구조에는 단순 구조, 선형 구조, 비선형 구조, 파일 구조 가 있는데 List는 선형 구조에 속한다.
    - 선형구조 (자료들 간의 관계 1 : 1)
    - 비선형구조 (자료들 간의 관계 1 : N)


ArrayList

정의

크기가 변할 수 있는 배열이며 List 인터페이스를 상속받은 클래스 중 하나이다.
배열은 데이터를 추가, 삭제할 때 반복문으로 인덱스를 한 칸식 밀거나 당기는 식으로 공간을 조절하지만,
ArrayList는 이 과정을 자동으로 처리해 준다.

  • List인터페이스의 구현체다.
  • index와 값의 쌍으로 구성된다.
  • index는 값에 대한 식별자 역할을 한다.
  • 크기를 동적으로 늘릴 수 있다(내부에서 처음 설정한 저장 용량을 넘어가면 배열 크기를 1.5배 증가시킴)
  • LinkedList에 비해 정렬, 탐색에 용이하다.

주요 메서드

메소드설명
boolean add(E e)지정된 제네릭 타입 데이터를 추가한다.
void add(int index, E element)특정 인덱스 위치에 데이터를 추가한다.
boolean addAll(Collection\<? extends E> c)Collection을 현재 ArrayList에 모두 추가한다.
void clear()모든 데이터를 초기화한다.
boolean contains(Object o)파라미터로 전달된 객체를 포함하고 있는지 검사한다.
E get(int index)특정 인덱스 위치의 제네릭 타입의 데이터를 가져온다.
int indexOf(Object o)파라미터로 전달된 객체의 인덱스를 리턴한다.
Iterator / iterator()순차 데이터 처리를 하려고 Iterator 객체를 가져온다.
boolean remove(int index)특정 인덱스 위치의 데이터를 삭제한다.
int size()ArrayList 객체에 포함된 데이터의 크기를 리턴한다.


LinkedList

정의

크기가 변할 수 있는 배열이며 List 인터페이스를 상속받은 클래스 중 하나이다.

  • LinkedList는 여러 개의 노드가 데이터와 포인터를 가지고 한 줄로 연결함으로써 데이터를 표현한다.
  • 리스트의 첫 번째 노드를 헤드(Head) 마지막 노드를 테일(Tail)이라고 표현한다.
  • ArrayList는 인덱스로 관리하는데 비해서 LinkedList는 연결 돼 체인처럼 관리한다.
  • ArrayList에 비해 데이터추가, 삭제가 용이하다.

주요 메서드

메서드설명
boolean add(object)LinkedList의 마지막에 데이터 추가
void add(index, object)LinkedList의 index위치에 데이터 추가
void addFirst(object)가장 앞에 데이터 추가
void addLast(object)가장 뒤에 데이터 추가
void set(int Index, Object)index위치에 데이터 변경
Object remove(int index)첫번째 데이터 삭제
Obejct removeFirst()첫번째 데이터 삭제
Object removeLast()마지막 데이터 삭제
void clear()모든 데이터 삭제
boolean removeAll(Collection c)지정한 컬렉션에 저장된 것과 동일한 노드들을 LinkedList에서 제거한다
boolean remove(Object obj)지정된 객체를 제거한다. (성공하면 true)
int size()LinkedList에 저장된 객체의 개수를 반환한다.
boolean isEmpty()LinkedList가 비어있는지 확인한다.
boolean contains(Object obj)지정된 객체(obj)가 LinkedList에 포함되어 있는지 확인한다.
boolean containsAll(Collection c)지정된 컬렉션의 모든 요소가 포함되었는지 알려줌.
int indexOf(Object obj)지정된 객체(obj)가 저장된 위치를 찾아 반환한다.
int lastIndexOf(Object obj)지정된 객체(obj)가 저장된 위치를 뒤에서 부터 역방향으로 찾아 반환한다.
Object get(in index)지정된 위치(index)에 저장된 객체를 반환한다.
List subList(int fromIndex, int toIndex)fromIndex부터 toIndex사이에 저장된 객체를 List로 반환한다.
Object set(int index, Object obj)지정한 위치(index)의 객체를 주어진 객체로 바꾼다.
Object[] toArray()LinkedList에 저장된 모든 객체들을 객체배열로 반환한다.
Object[] toArray(Obejct[] objArr)LinkedList에 저장된 모든 객체들을 객체배열 objArr에 담아 반환한다.

Linked List 이터레이터

메서드설명
Iterator iterator()LinkedList의 Iterator객체를 반환한다
ListIterator listIterator()LinkedList의 ListIterator를 반환한다
ListIterator listIterator(int index)LinkedList의 지정된 위치부터 시작하는 ListIterator를 반환한다












참고 : https://devlogofchris.tistory.com/42
참고 : https://velog.io/@rara_kim/Java-ArrayList-%EC%82%AC%EC%9A%A9%EB%B2%95
참고 : https://koiking.tistory.com/83
참고 : https://prol0gue.tistory.com/9

profile
주니어개발자 Fox 입니다 🦊

0개의 댓글