January 10, 2021
배열은 자료구조 중에서 가장 기본이고 단순한 구조로, 동일한 타입 데이터들의 집합이다. 하지만 배열을 사용할 때 몇 가지 제약이 따른다.
배열은 초기 생성 시에 그 크기를 미리 지정해야 한다.
데이터의 삽입, 검색, 삭제 등의 기능을 매번 직접 작성하면 중복 로직들이 발생한다.
✨프로그램에서 사용할 데이터들을 효과적으로 관리하고 사용할 수 있도록 다양한 기능의 클래스를 제공한다. 👉 컬렉션 프레임워크
컬렉션 프레임워크 등장 이전 Vector, Stack, Properties |
컬렉션 프레임워크 |
---|---|
- 각각의 사용법이 다름 - 상호 호환성이 떨어짐 - 확장성이 떨어짐 |
- 높은 성능으로 동작 - 상호운용성이 뛰어남 - 응용 및 확장성이 뛰어남 🗝 표준인터페이스들의 집합에 기초를 두고 구현되었기 때문에 가능 |
객체들의 집합을 사용할 수 있도록 하는 컬렉션 계층의 최상위 인터페이스
주요 추상 메소드
boolean add(Object obj)
: 컬렉션에 obj 추가, 추가 성공 시 true return, 이미 컬렉션의 멤버이거나 중복을 허용하지 않는 컬렉션일 경우 false retrunboolean contains(Object obj)
: obj가 컬렉션의 요소이면 true returnboolean isEmpty()
: 컬렉션이 비어있을 경우 true returnIterator iterator()
: 컬렉션의 모든 요소를 순차적으로 접근할 수 있는 Iterator return
-boolean remove(Object obj)
: 컬렉션에서 obj 하나 제거, 성공 시 true returnint size()
: 컬렉션의 요소의 수를 returnCollection 인터페이스를 상속했으며, 순차적인 리스트를 다루기 위해 사용
주요 추상 메소드
void add(int index, Object obj)
: 리스트의 index위치에 obj 삽입Object get(int index)
: 리스트의 index 위치의 요소 returnObject remove(int index)
: 리스트의 index 위치의 요소를 삭제하고 삭제한 요소 returnCollection 인터페이스를 상속했으며, 유일한 요소만 포함하는 집합을 다루기 위해 사용
add()
로 다시 저장하려 할 때 false를 returnSet 인터페이스를 상속했으며, 정렬된 집합을 다루기 위해 사용
주요 추상 메소드
Collection 인터페이스 대부분의 기능을 실제 구현
AbstractCollection을 확장하고 List 인터페이스 대부분의 기능 실제 구현
AbstractList 확장, 요소들의 순차적인 접근 처리
추가 메소드
void addFirst(Object obj)
: 리스트 맨 앞에 obj 추가void addLast(Object obj)
: 리스트 맨 뒤에 obj 추가Object getFirst()
: 첫 번쨰 요소 returnObject getLast()
: 마지막 요소 returnObject removeFrist()
: 첫 번째 요소 삭제 후 삭제한 요소 returnObject removeLast()
: 마지막 요소 삭제 후 삭제한 요소 return추가된 메소드
컬렉션 클래스의 모든 요소를 처음~끝까지 순차적으로 접근 가능하도록 해주는 인터페이스 👉 Iterator는 간단하고 통일된 방법으로 처리할 수 있는 방법을 제공
iterator()
메소드를 통해 생성 가능주요 메소드
boolean hasNext()
: Iterator에 요소가 더 있으면 true 반환Object next()
: 다음 요소 반환void remove()
: 컬렉션에서 현재 요소를 삭제예시
import java.util.Iterator;
import java.util.LinkedList;
public class IteratorTest{
public static void main(String[] args){
LinkedList<Double> scoreList = new LinkedList<Double>;
//...
Iterator<Double> it = scoreList.iterator();
while(it.hasNext()){
// ...
}
}
}
Map
주요 관련 클래스
⭐️ HashMap: AbstractMap 확장, Hash Table을 이용하여 데이터 관리하는 클래스
주요 메소드
put()
: 키와 값으로 구성된 새로운 데이터 추가get()
: 지정한 키에 해당하는 데이터 returnremove()
: 지정한 키에 해당하는 데이터 삭제containsKey()
: 지정한 키가 이미 존재하는지 여부 returncontainsValue()
: 지정한 값이 존재하는지 여부 returnsize()
: 요소 개수 returnisEmpty()
: 비어있는 지 여부 return주요 메소드
void clear()
: 맵의 모든 요소 삭제Object get(Object k)
: 키값 k와 연결된 value returnboolean isEmpty()
: 맵이 비어있으면 true returnSet keySet()
: 맵에 있는 모든 key를 포함하는 Set을 returnObject put(Object k, Object v)
: 지정한 k-v 쌍의 요소를 맵에 추가, 이미 있는 k라면 덮어씀Object remove(Object k)
: 키값 k와 연결된 value를 삭제int size()
: 맵에 저장된 요소의 수 returnCollection values()
: 맵에 있는 모든 value를 포함하는 Set를 return