JAVA

Java java.util / Collection,List ,Set,Map인터페이스 / 주요 메서드 정리

서묘_ 2021. 12. 22. 21:15

Collection 인터페이스 

boolean add(E e) : Collection에 객체 추가
void clear() : Collection의 모든 객체 제거
int size() : Collection에있는 요소의 개수를 반환
boolean remove(Object o) : Collection의 매개변수에 해당하는 인스턴스가 존재하면 제거

 

Map 인터페이스

Collection 하위 인터페이스

V put(K key,V value) : key에 해당하는 value값을 map에 저장
V get(K key) : key에 해당하는 value값을 반환 

 

List 인터페이스

Collection 하위 인터페이스로 Collection 메서드들을 다 물려받음

 

ArrayList와 Vector 클래스

List 구현 클래스

ArrayList : 단일Thread 사용시, 일반적으로 많이 사용한다.

Vector : 동기화, 멀티Thread  사용시

 

ArrayList() : () - 기본 생성자 10개의 저장 공간 생성, (int) - int만큼 저장 공간 생성
add(제네릭 매개변수) : 기존데이터의 다음 공간에 리스트 추가
add(int,E e) : 인덱스(int)에 값을 넣고 뒤로밀기
set(int,E e) : 인덱스(int)에 값을 넣고 원래 값 삭제
get(int) : 인덱스(int)의 값 리턴
remove(int) : 인덱스(int)의 값 제거 
indexOf(Object o) : 리스트에서 해당 값의 인덱스를 찾음 없으면 -1리턴
size() : 저장된 리스트 개수 출력
subList(int fromIndex, int toIndex) : fromIndex부터  toIndex앞 까지 리스트 리턴
toArray : 배열로 변환
trimToSize() : 비어있는 칸을 없앤다, 용량 줄이기용, 부족하면 알아서 늘어날거니까!

 

LinkedList 클래스

List 구현 클래스

List처럼 여러 공간이 뭉쳐있는게 아니라

요소마다 나눠져있고 각 요소마다 다음 요소의 참조값을 가지고있음 (data/다음요소의 주소)

요소의 추가, 삭제에 드는 비용이 배열보다 적다. 

 

ArrayList는 순차적으로 저장, 인덱스로 검색 해야 하는 경우 주로 사용한다면

LinkedList는 중간에 수정, 삭제가 많은 경우 사용한다.

 

 

Stack 클래스 : Last In First Out(LIFO)

List 구현 클래스

맨 뒤에 추가된 요소가 먼저 꺼내지는 자료구조
게임의 무르기 기능, 최근 자료 추출 등에서 사용
push(E item) : 맨 뒤에 추가

pop() : 맨 뒤의 값 삭제(리턴값에 사용되면 해당 값 리턴 후 삭제)

peek() : 맨 뒤의 값 리턴

empty() : 비어있는지 확인

clear() : 비우기

 


Queue 인터페이스 : First In First Out(FIFO)

Collection 하위 인터페이스
먼저 저장된 자료가 먼저 꺼내지는 선착순, 대기열 구조
offer(E e) : 맨 뒤에 추가

poll() : 첫번째 꺼내기

 

 

Iterator 인터페이스

Collection 하위 인터페이스
Collection의 개체를 순회하는 인터페이스, 전부 한번씩 꺼낼때 사용
iterator() 메서드 호출
Iterator ir = memberArrayList.iterater();
boolean hasNext() : 이후 요소가 더 있는지 체크
E next() : 다음에 있는 요소 반환

 

 

Set 인터페이스
Collection의 하위 인터페이스, 중복허용x, 순서없음
아이디, 주민번호, 사원번호 등 유일한 값이나 객체를 관리할때 사용
get메서드가 없다.

 

 

HashSet 클래스 

Set 구현 클래스

중복을 허용하지 않으므로 저장되는 객체의 동일 여부를 알기 위해

equals()와 hashCode() 메서드를 재정의해서 사용

public class HashSetEx {
	private void Haseset() {
		// TODO Auto-generated method stub

	}
	@Override
	public int hashCode() {
		// TODO Auto-generated method stub
		return super.hashCode();
	}

	@Override
	public boolean equals(Object obj) {
		// TODO Auto-generated method stub
		return super.equals(obj);
	}
	
}

이클립스에서 HashSet클래스를 사용하려 하면 우클릭>소스>오버라이딩 항목에 알아서 뜬다. 가져다쓰자.

 

 

TreeSet 클래스

Set 구현 클래스
객체의 정렬에 사용되는 클래스
중복을 허용하지 않으면서 오름차순 or 내림차순으로 객체를 정렬한다.

정렬 기준을 정해줘야한다.
내부적으로 이진 검색트리(binary search tree)로 구현되어있다.

 

Comparable 인터페이스  (더 많이 쓴다고한다.)
compareTo() 메서드를 구현

매개 변수와 객체 자신(this)를 비교
int CompareTo : 문자열의 크기 비교
    0 : 두 객체의 크기는 같다.
    양수 : 매개변수로 전달된 객체가 작다
    음수 : 매개변수로 전달된 객체가 크다

 

Comparator 인터페이스
compare() 메서드를 구현

두 개의 매개 변수를 비교
TreeSet 생성자에 Comparator가 구현된 객체를 매개변수로 전달

정렬 대상이 되는 클래스가 구현해야 하는 인터페이스
이미Comparable이 구현된 경우 Comparator를 이용하여 다른 정렬 방식을 정의 할 수 있음 


Map 인터페이스
HashMap 클래스 : 동기화 제공, 멀티Thread에서 사용, 검색시에 편리
TreeMap 클래스 : 정렬해서 관리

 

 

 

List/Set/Map 저장, 조회 메서드 구분


List 

저장 : add()
조회 : get(인덱스), Iterator


Set

저장 : add()
조회 : Iterator


Map

저장 : put(key,value)
조회 : get(key)