이전에 배열을 한적이 있다.
배열은 선언 시 정한 크기(저장 용량)를 변경할 수 없고, 항목을 저장, 삭제 , 추가하는 메소드가 없어 직접 인덱스를 사용해야 한다.
이러한 불편함을 해결하기 위해 자바는 컬렉션 프레임 워크를 제공한다.
컬렉션 프레임워크 (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객체를 한개씩 가져옴
}
본 내용은 #혼자공부하는자바 책을 참고해 공부하려 작성했습니다.
'Work & Study > JAVA (& 혼공자Java)' 카테고리의 다른 글
자바(Java) - 스레드 제어2 (0) | 2021.01.07 |
---|---|
자바(Java) - 스레드 제어1 (0) | 2021.01.07 |
자바(Java) - 스레드5 (동기화 메소드) (0) | 2020.12.30 |
자바(Java) - 스레드4 (스레드 이름) (0) | 2020.12.21 |
자바(Java) - 스레드3 (toolkit.beep(); 비프음 실행) (0) | 2020.12.21 |