자바생
728x90

📌List 인터페이스를 구현하는 클래스

- ArrayList, Vector, LinkedList, Stack이 있다.

 

📌List 특징

- List는 입력 순서대로 데이터가 저장이 되고, Set과 다르게 중복 데이터 저장이 허용된다. 선형 구조로 데이터를 일렬로 놓은 모양이라고 생각하면 된다. 

 

📌List 공통 메소드

boolean add(E e) 

- 데이터 삽입

 

void add(int index, E element)

- index에 데이터 삽입

 

void clear()

- 데이터 모두 삭제

 

boolean contains(Object o)

- 데이터가 존재하면 true, 없으면 false 리턴

 

E get(int index)

- index의 데이터 리턴

 

boolean isEmpty()

- 데이터가 없으면 true, 하나라도 있으면 false 리턴

 

E remove(int index)

- index의 데이터 삭제

 

E set(int index, E element)

- 해당 index의 값을 element로 바꾼다.

 

int size()

- 데이터의 개수 리턴

 

Object[] toArray()

- Array형으로 바꿈

 

<T> T[] toArray(T[] a)

- 매개변수의 배열에 List형을 배열로 반환함.

 

📌List vs Array

처음에 코드를 짜기에 앞서, 우리는 배열을 쓸지 List를 쓸지 생각해야 한다.

내가 가장 크게 중요하게 생각하는 차이점은 길이를 조정할 수 있는가 없는가이다.

배열은 정적이기 때문에 길이를 조정할 수 없고(배열의 크기를 넘어서 데이터 추가를 하기 위해서는 다시 배열을 만들어야 함), List는 동적으로 길이를 조정할 수 있다.

그래서 데이터의 삽입, 삭제가 빈번하면 List를 사용하고, 검색 위주의 문제라면 array를 쓰는 것이 유리하다.

 

📌ArrayList

ArrayList는 동적이기 때문에, 초기 용량보다 많은 데이터가 들어오면 자동으로 늘어난다.

 

List<E> (변수) = new ArrayList<>();

 

📌Vector

ArrayList와 동일한 구조를 갖지만, Vector는 자동 동기화를 보장해서 멀티 스레드 환경에서 안정적으로 사용 가능하다.

그래서 자동 동기화를 보장하는 Vector가 ArrayList보다 더 느리다. 따라서 멀티스레드 환경이 아닌 경우에는 ArrayList를 사용하는 것이 유리하다.

 

List<E> (변수) = new Vector<>();

 

vector 메소드

E elementAt(int index)

- 해당 index에 해당하는 값을 리턴하는

- ArrayList, Vector, LinkedList, Stack이 있다.

 

📌Stack

이 Stack은 자료구조에서 배웠던 Stack과 같다. Stack 클래스는 Vector클래스를 상속한다.

 

Stack<E> stack = new Stack<>();

 

stack 메소드

boolean empty()

- 스텍이 비었으면 true 리턴

 

E peek()

- 스텍의 top의 값 리턴, pop과 다르게 삭제하지 않음.

 

E pop()

- 스텍의 top 값 리턴하면서 삭제

 

E push(E item)

- 스텍에 데이터를 삽입

 

int search(Object o)

- 스텍에 객체가 존재하면 1을 리턴, 존재하지 않으면 -1을 리턴함.

 

 

📌LinkedList

LinkedList는 데이터를 저장하는 노드들이 서로 연결되어있다. 즉, 처음 노드는 두 번째 노드와 연결, 두 번째 노드는 세 번째 노드와 연결되어있다. 그래서 ArrayList와 비교할 때 삽입과 삭제에서는 유리하다. 그러나 LinkedList는 처음부터 노드들을 순차접근 해야하므로 최악의 경우 O(n)이 성립되어 검색에서는 불리하다.

 

LinkedList 메소드

void addFirst(E e)

- 제일 앞에 데이터 추가

 

void addLast(E e)

- 제일 마지막에 데이터 추가

 

E get(int index)

- 해당 index의 값을 리턴

 

E getFirst()

- 첫 번째 값을 리턴

 

E getLast()

- 마지막 값을 리턴

 

728x90
profile

자바생

@자바생

틀린 부분이 있다면 댓글 부탁드립니다~😀

검색 태그