List 컬렉션

Sunny·2022년 11월 9일
0

🌱List 컬렉션이란?

  • List 컬렉션은 객체를 일렬로 늘어놓은 구조
  • 객체를 인덱스로 관리하기 때문에 객체를 저장하면 자동 인덱스가 부여되고, 인덱스로 객체를 검색, 삭제할 수 있는 기능 제공
  • 객체 자체를 저장하는 것이 아니라 객체의 번지를 참조하는 것
  • 동일한 객체를 중복 저장할 수 있는데, 이 경우 동일한 번지가 참조
  • null도 저장이 가능한데, 이 경우 해당 인덱스는 객체를 참조하지 않음
  • List 컬렉션에는 ArrayList, Vector, 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)주어진 객체를 삭제

위의 표에서 메소드의 매개 변수 타입과 리턴 타입에는 E라는 타입 파라미터가 있는데, 이것은 List 인터페이스가 제네렉 타입이기 때문. 구체적인 타입은 구현 객체를 생성할 때 결정

다음은 예시.

List<String> list = "";
list.add("sunny");  	// 맨끝에 객체 추가
list.add(1, "flower"); 	// 지정된 인덱스에 객체 삽입

String str = list.get(1); 	// 인덱스로 객체 찾기
list.remove(0); 			// 인덱스로 객체 삭제
list.remove("flower");		// 객체 삭제

🌱ArrayList

  • ArrayList에 객체를 추가하면 객체가 인덱스로 관리
  • 일반 배열과의 공통점은 인덱스로 객체를 관리한다는 점
  • 일반 배열과의 차이점
    - 배열 : 생성할 때 크기가 고정되고 사용 중에 크기를 변경할 수 없음
    - ArrayList : 저장 용량(capacity)을 초과한 객체들이 들어오면 자동적으로 저장 용량이 늘어남

ArrayList의 생성 방법

저장할 객체 타입을 타입 파라미터로 표기하고 기본 생성자를 호출함

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

ArrayList의 생성시 초기 용량 크기 정하기

기본 생성자로 ArrayList 객체를 생성하면 내부에 10개의 객체를 저장할 수 있는 초기 용량을 가짐. 저장되는 객체 수가 늘어나면 용량이 자동으로 증가하지만, 처음부터 용량을 크게 잡고 싶다면 용량의 크기를 매개값으로 받는 생성자를 이용하면 됨

// String 객체 30개를 저장할 수 있는 용량을 가짐
List<String> list = new ArrayList<String>(30); 

고정된 객체들로 구성된 ArrayList의 생성

List<T> list = Arrays.asList("sunny", "flower");

ArrayList의 특징

  • 자바 5부터는 제네릭을 도입하여 ArrayList 객체를 생성할 때 타입 파라미터로 저장할 객체의 타입을 지정함으로써 불필요한 타입 변환을 하지 않음
// 자바 4 이전
List list = new ArrayList();	// 컬렉션 생성
list.add("sunny");  			// 객체 추가
Object obj = list.get(0); 		// 객체 검색
String name = (String) obj; 	// 타입 변환 후 홍길동을 얻을 수 있음

// 자바 5 이후
List<String> list = new ArrayList<String>(); 
list.add("sunny");  		// 객체 추가
String name = list.get(0); 	// 컬렉션에서 객체 검색하여 바로 얻음
  • ArrayList에 객체를 추가하면 인덱스 0부터 차례대로 저장됨
  • 특정 인덱스의 객체를 제거하면 바로 뒤 인덱스부터 마지막 인덱스까지 모두 앞으로 1씩 당겨짐
  • 특정 인덱스에 객체를 추가하면 해당 인덱스부터 마지막 인덱스까지 모두 1씩 밀려남
  • 빈번한 객체 삭제와 삽입이 일어나는 경우에는 ArrayList보다는 LinkedList를 사용하는 것이 좋지만, 인덱스 검색이나 맨 마지막에 객체를 추가하는 경우에는 ArrayList가 더 좋은 성능을 발휘
profile
개발에 재미를 붙여보기 :)

0개의 댓글