본문 바로가기

건승하고있어요/Java

[Collection] List컬렉션 - ArrayList, LinkedList

반응형

List컬렉션


-객체를 일렬로 늘어놓은 구조

-객체를 인덱스로 관리 -> 객체를 저장하면 자동 인덱스가 부여

-인덱스로 객체를 검색, 삭제할 수 있는 기능 제공


List컬렉션의 공통사용 가능한 메소드

기능 

메소드 

설명 

 객체추가 

 boolean add(E e)

 주어진 객체를 맨 끝에 추가 

 void add(int index, E element)

 주어진 인덱스에 객체를 추가

 set(int index, E element)

 주어진 인덱스에 저장된 객체를 주어진 객체로 바꿈

 객체검색

 boolean contains(Object o)

 주어진 객체가 있는지 여부 

 E get(int index)

 주어진 인덱스에 저장된 객체를 리턴

 isEmpty()

 컬렉션이 비어있는지 조사

 int size()

 저장되어 있는 전체 객체 수를 리턴

 객체삭제

 void clear() 

 저장된 모든 객체를 삭제

 E remove(int index)

 주어진 인덱스에 저장된 객체를 삭제

 boolean remove(Object o)

 주어진 객체를 삭제


ArrayList


List 인터페이스의 구현클래스

ArrayList에 객체를 추가하면 객체가 인덱스로 관리됨.

배열은 생성할 때 크기가 고정되고 사용 중에 크기 변경 불가 -> ArrayList는 저장용량을 초과한 객체들이 들어오면 자동적으로 저장용량이 늘어남


List<String> list = new ArrayList<String>();

List<String> list = new ArrayList<String>(40); <- 저장용량이 40인 arraylist 생성


ArrayList에 객체를 추가하면 0부터 차례대로 저장된다.

특정 인덱스의 객체를 제거하면 바로 뒤 인덱스부터 마지막 인덱스까지 모두 앞으로 1씩 당겨진다. 

따라서 빈번한 객체 삽입이 일어나는 곳에서는 ArrayList를 사용하지 않는 것이 바람직하지 않다.

인덱스 검색이나 맨 마지막에 객체를 추가하는 경우에 ArrayList를 사용하는 것이 좋다.



LinkedList


LinkedList에서 특정 인덱스의 객체를 제거하면 앞뒤 링크만 변경되고 나머지 링크는 변경되지 않는다. 

따라서 빈번한 객체 삭제와 삽입이 일어나는 곳에서 사용하면 좋다. 


List<E> list = new LinkedList<E>();


LinkedList가 처음 생성될 때에는 어더한 링크도 만들어지지 않기 때문에 내부는 비어있다. 

반응형