본문 바로가기
Programing/JAVA (& 혼공자Java)

자바(Java) - 컬렉션 프레임워크 (List 컬렉션 1)

by a.k.a DUKI 2021. 1. 12.
728x90
반응형
SMALL

이전에 배열을 한적이 있다.

배열은 선언 시 정한 크기(저장 용량)를 변경할 수 없고, 항목을 저장, 삭제 , 추가하는 메소드가 없어 직접 인덱스를 사용해야 한다.

이러한 불편함을 해결하기 위해 자바는 컬렉션 프레임 워크를 제공한다.

 

컬렉션 프레임워크 (Collection Framework) 란,

객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 인터페이스와 구현클래스를 java.util 패키지에서 제공한다.

  • 컬랙션(Colletion): 객체의 저장
  • 프레임워크(Framework): 사용 방법을 정해놓은 라이브러리

컬렉션 프레임워크의 주요 인터페이스로는 List, Set, Map 세가지가 있다. 아래의 그림은인터페이스로 사용 가능한 컬렉션 클래스(구현 클래스)를 보여준다.

혼공자 책 참고

 

List 컬렉션

배열과 비슷하게 객체를 인덱스로 관리한다.

  • 저장 용량이 자동으로 증가

  • 객체를 저장할 때 자동 인덱스가 부여 됨

  • 추가, 삭제, 검색을 위한 다양한 메소드 제공

객체 자체를 저장하는 것이 아닌, 객체의 번지를 참조한다.

  • 객체를 중복 저장할 수 있음 -> 동일한 번지 참조

  • null 저장 가능 -> 인덱스는 객체를 참조하지 않음

혼공자 책 참고

 

아래의 표는 List 인터페이스의 메소드이다.

기능

메소드

설명

객체 추가

boolean add(E e)

주어진 객체를 맨 끝에 추가한다.

void add(int index, E element)

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

E set(int index, E element)

주어진 인덱스에 저장된 객체를 주어진 객체로 바꾼다.

객체 검색

boolean contains(Object o)

주어진 객체가 저장되어 있는지 조사한다.

E get(int index)

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

boolean isEmpty()

컬렉션이 비어 있는지 조사한다.

int size()

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

객체 삭제

void clear()

저장된 모든 객체를 삭제한다.

E remove(int index)

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

boolean remove(Object o)

주어진 객체를 삭제한다.

위에 표랑 같은 건데, 이게 잘보여서 동일한 내용 추가한다.

메소드의 매개 변수 타입과 리턴 타입에 E라는 타입 파라미터가 있는데, 이것은 저장되는 객체의 타입을 List컬렉션을 생성할 때 결정하라는 뜻이다.

 

 

예시1) List컬렉션 사용

List<String> list = .. ;    //List컬렉션에 저장되는 객체를 Stirng 타입으로 하겠다.
list.add("홍길동");         //맨 끝 객체 추가
list.add(1, "김길동");	     //지정된 인덱스에 객체 삽입
String str = list.get(1);  //인덱스로 객체 검색
list.remove(0);            //인덱스로 객체 삭제
list.remove("김길동");     //객체 삭제

 

List컬렉션에 저장된 모든 객체를 대상으로 하나씩 가져와 처리하고 싶을 때는 for문을 이용하면 쉽게 이용할 수 있다.

List<String> list = ...;
	for(int i=0; i<list.size(); i++;){ //저장된 총 객체 수만큰 반복
    	String str = list.get(i);
        //list.get(i); --> i인덱스에 저장된 String객체를 갖고옴
    }

향상된 for문 사용

for(String str : list){ //저장된 총 객체 수만큼 반복
	//list에 String객체를 한개씩 가져옴
}

 

 

본 내용은 #혼자공부하는자바 책을 참고해 공부하려 작성했습니다.

 

728x90
반응형
LIST

댓글