자바 컬렉션(Collection) 한 눈에 정리하기

DongJoo Kwak·2022년 2월 28일
2

🌳 컬렉션

📌컬렉션 구조

: 자료구조 과목에서 배우는 많은 자료구조들을 컬렉션으로 만들어 제공 
제네릭이라는 기법으로 구현. 
가변크기의 컨테이너로 만들어짐 

1) 컬렉션을 위한 자바 인터페이스와 클래스 
	Collection<E> 			             Map<K, V> 
	/     |     		\
     Set<E>  List<E> 		Queue<E>		 |		인터페이스 
-----------------------------------------------------------------------------------
     /	       |         \	   \  |			 |		클래스 
HashSet<E>  ArrayList<E> Vector<E>  LinkedList<E>	HashMap<K, V> 
			    | 
			 Stack<E> 

[ Collection 상속, 단일 클래스 객체 ]
- Vector, ArrayList : 가변크기의 배열 
- LinkedList : 노드들이 링크로 연결되는 리스트 
- Stack : 스택
- HashSet : 집합 
[ Map 상속 ]
- HashMap : 키와 값의 쌍으로 이루어진 값을 저장하는 컬렉션 

📌제네릭(generic)기법

	: 컬렉션은 제네릭 기법으로 만들어짐.
	컬렉션 클래스 이름에 <E>, <K>, <V>등이 포함 -> 타입매개변수(generic type) 
	Vector<Integer> --> 정수만 저장하는 벡터 
	Vector<String>  --> 문자열만 저장하는 벡터 
	특정타입만 다루지 않고 여러 종류의 타입으로 변신할 수 있도록 <E>를 사용
	단, int, char, double등 기본타입으로 제네릭 사용 불가. -> Wrapper클래스로 지정
	
	ex) 제네릭 타입을 가진 클래스 
	class Stack<E> {
		...
		void push(E element) { .... }
		E pop() { ... }
		...
	}
	
	Stack<String> s = new Stack<String>(); 
	
		void push(String element) { ... }
		String pop() { ... }

	E : element (요소) 
	T : type
	V : value
	K : key



📌 ArrayList : java.util.ArrayList

가변크기의 배열을 구현, Vector와 거의 동일. 
스레드간에 동기화 지원 X, 다수의 스레드가 동시에 ArrayList 요소 삽입/삭제시
데이터 훼손 우려되지만, 멀티 스레드 동기화 시간 소모 없어 Vector보다 속도 빠름. 
중간에 빈공간이 생기면 요소 위치 자동 이동시킴. 
초기 사이즈 10이나 부족하면 자동으로 늘어남. 

✨주요 메서드 ✨

boolean add(E elem) : 맨뒤에 데이터elem 추가

void add(int idx, E elem) : idx위치에 elem 추가

boolean addAll(Collection<? extends E> c) : 컬렉션c의 모든 요소를 맨 뒤에 추가

E get(int idx) : idx위치의 요소 리턴

E set(int idx, E elem) : idx위치의 요소를 elem으로 수정 (이전값은 리턴해줌)

void clear() : 모든 요소 삭제

E remove(int idx) : idx위치 요소 삭제

boolean remove(Object o) : o와 동일한 요소 삭제

int size() : 저장된 요소의 개수 리턴

boolean contains(Object o) : o를 포함하고 있으면 true 리턴

int indexOf(Object o) : o가 저장된 인덱스번호 리턴, 없으면 -1

boolean isEmpty() : 저장된 요소가 없으면 true

Object[] toArray() : 모든 요소를 포함한 배열 리턴

✨ 객체 생성 
ArrayList<타입매개변수> 변수명 = new ArrayList<타입매개변수>(); 



📌 Vector : java.util.Vector

가변적 배열 구조, 동기화 지원 

1) 객체 생성 
	Vector<타입매개변수> 변수명 = new Vector<타입매개변수>(); 

✨주요 메서드 ✨

boolean add(E elem) : 맨뒤에 추가

void add(int idx, E elem) : idx 위치에 elem 추가

E get(int idx)

E elementAt(int idx)

void clear()

E remove(int idx)

boolean remove(Object o)

E set(int idx, E elem)

int size() : 저장된 요소의 개수 리턴

int capacity() : 저장공간 크기 리턴

Object[] toArray() : 배열로 만들어 리턴

int indexOf(Object o) : o의 인덱스번호 리턴

boolean isEmpty() : 저장된 요소가 하나도 없으면 true



📌Iterator : java.util.Iterator (반복자)

: 요소가 순서대로 저장된 컬렉션에서 요소를 순차적으로 검색할때 
사용하면 편함. 

✨주요 메서드 ✨

boolean hasNext() : 다음에 방문할 요소가 있으면 true
E next() : 다음요소 리턴
void remove() : 마지막으로 리턴된 요소 제거



📌HashMap<K, V> : java.util.HashMap

: 키(key)와 값(value)의 쌍으로 구성되는 요소들을 다룬다. 

K = key로 사용할 데이터 타입 

V = 값으로 사용할 데이터 타입 

데이터 저장시, key와 값을 받아 key를 이용하여 해시함수를 실행, 
해시함수가 리턴하는 위치에 키와 값을 저장하는 형태, 
반대로 데이터를 불러올때 키를 이용하여 꺼내오는데, 
키를 이용하여 동일한 해시함수를 실행하여 값이 저장된 위치를 알아내어 값을 리턴한다. 

-> index 없다 => key로 꺼냄 (사용자 정의 인덱스값) 
-> index 중복X => key값이 중복되면 안된다. 

1) 객체 생성 
HashMap<key제네릭타입, value제네릭타입> 변수명 = new HashMap<key제네릭, value제네릭>(); 

✨주요 메서드 ✨

V put(K key, V value) : key value 쌍으로 요소 하나 추가

V get(K key) : key를 주고 값꺼내기

V remove(K key) : key 에 해당하는 key,value 세트 삭제

int size() : 저장된 요소의 개수

void clear() : 전체 삭제

Set keySet() : 키들만 모아서 Set타입으로 리턴

boolean isEmpty() : 저장된게 없으면 true

boolean containsKey(Object key) : key를 포함하면 true

boolean containsValue(Object value) : value를 포함하면 true



📌 Set -> HashSet

: 순서가 없고, 중복 요소가 없는 컬렉션. 동일한 값 저장 불가. 



📌 Properties

: K, V형태로 데이터 저장. K,V 모두 String으로만 처리됨.
주로 어플리케이션의 환경 설정과 관련된 정보를 .properties 확장자의 파일에 저장해놓고
해당 파일을 자바 코드로 불러올때 사용하는 자바 클래스이다. 

📈금융 개발 블로그 : https://quantpro.co.kr/

profile
즐거운 개발 공간

0개의 댓글