반응형

# 컬렉션 프레임웍

  • 컬렉션 (Collection) : 데이터 군을 저장하는 클랙스들을 표준화한 설계. (데이터 그룹)
  • 프레임웍 : 표준화된 프로그래밍 방식을 의미.
  • JDK 1.2 부터 컬렉션 프레임웍이 등장, 다양한 종류의 컬렉션 클래스가 추가되고 체게화 됨.
  • 장점 : 컬렉션 프레임웍은 다수의 데이터를 다루는데 필요한 많은 다양한 클래스들을 제공, 인터페이스와 다형성을 이용한 객체지향적 설계를 통해 사용법을 익히기 쉽고 재사용성이 높은 코드를 작성할 수 있다.

## 핵심 인터페이스

  • 컬렉션 프레임웍에서 컬렉션 데이터 그룹을 크게 3가지로 타입이 존재한다고 인식, 3개의 인터페이스를 정의하였고 인터페이스 List 와 Set 의 공통 부분을 다시 뽑아 새로운 인터페이스인 Collection 을 추가로 정의.
  • 컬렉션 프레임웍 핵심 인터페이스의 상속 계층도 상 List 와 Set 은 Collection 에 상속되지만, Map 인터페이스의 경우 다른 형태로 컬렉션을 다루기 때문에 같은 상속 계층도에 포함되지 못했다.

## 핵심 인터페이스의 특징 (List / Set / Map)

List

  • 순서가 있는 데이터의 집합 (데이터 중복 허용)
  • 구현클래스 : ArrayList / LinkedList / Stack  Vector 등 ..

Set

  • 순서를 유지하지 않는 데이터의 집합 (데이터 중복 X)
  • 구현클래스 : HashSet / TreeSet 등 ..

Map

  • 키(Key) 와 값(Value) 의 쌍으로 이루어진 데이터 집합, 순서를 유지하지 않는다. (키 중복 X / 값 중복 허용)
  • 구현클래스 : HashMap / TreeMap / Hashtable / Properties 등 ..

## Collection 인터페이스

메서드 설명
boolean add (Object o)
bollean addAll (Collection c)
지정된 객체의 객체들을 Collection 에 추가
void clear () Collection 의 모든 객체를 삭제
boolean contains (Object o)
boolean contains (Collection c)
지정된 객체들이 Collection 에 포함되어 있는지 확인
boolean equals (Object o) 동일한 Collection 인지 비교
int hashCode () Collection 의 hash code 반환
boolean isEmpty () Collection 이 비어있는지 확인
iterator iterator () Collection 의 iterator 를 반환
boolean remove (Object o) 지정된 Collection 에 포함된 객체들을 삭제
boolean removeAll (Collection c) 지정된 Collection 에 포함된 객체만 남기고 다른 객체들은 Collection 에서 삭제. (작업으로 Collection 에 변화가 있으면 true / 없으면 false 반환)
int size () Collection 에 저장된 객체의 개수 반환
Object [] toArray () Collection 에 저장된 객체를 객체 배열(Object []) 로 반환
Object [] toArray (Object [] a) 지정된 배열에 Collection 의 객체를 저장해서 반환

## List 인터페이스

  • 중복 허용
  • 저장 순서 유지
메서드 설명
void add (int index, Object element)
boolean addAll (int index, Collection c)
지정된 위치에 객체(들)를 추가
Object get(int index) 지정된 위치에 있는 객체 반환
int indexOf (Object o) 지정된 객체의 위치를 반환
(List의 첫 번째 요소부터 순방향으로 찾음)
int lastIndexOf (Object o) 지정된 객체의 위치를 반환
(List의 마지막 요소부터 역방향으로 찾음)
ListIterator listIterator ()
ListIterator listIterator (int index)
List 의 객체에 접근할 수 있는 ListIterator 를 반환
Object remove (int index) 지정된 위치에 있는 객체를 삭제하고 삭제된 객체 반환
Object set (int index, Object element) 지정된 위치에 객체를 저장
void sort (Comparator c) 지정된 비교자(Comparator)로 List 정렬
List subList (int fromIndex, int toIndex) 지정된 범위에 있는 객체 반환

## Set 인터페이스

  • 중복 허용 X
  • 저장 순서 유지 X
  • 구현 클래스 : HashSet / TreeSet 등 ..

## Map 인터페이스

  • 값만 중복 허용 (키는 중복 X)
  • 기존에 저장된 데이터와 중복된 키와 값을 저장 시 기존의 값은 없어지고 마지막에 저장된 값이 남게 됨.
  • 구현 클래스 : Hashtable / HashMap / LinkedHashMap / SortedMap / TreeMap 등 ..
메서드 설명
void clear () Map 의 모든 객체 삭제
boolean containsKey (Object key) 지정된 key 객체와 일치하는 Map 의 key 객체가 있는지 확인
boolean containsValue (Object value) 지정된 value 객체와 일치하는 Map 의 value 객체가 있는지 확인
Set entrySet () Map 에 저장된 key-value 쌍을 Map.Entry 타입의 객체로 저장한 Set으로 반환
boolean equals (Object o) 동일한 Map 인지 비교
Object get (Object key) 지정한 key 객체에 대응하는 value 객체를 찾아서 반환
int hashCode () 해시코드 반환
boolean isEmpty () Map 이 비어있는지 확인
Set keySet () Map 에 저장된 모든 key 객체를 반환
Object put (Object key, Object value) Map 에 value 객체를 key 객체에 연결하여 저장
void putAll (Map t) 지정된 Map 의 모든 key-value 쌍을 추가
Object remove (Object key) 지정한 key 객체와 일치하는 key-value 객체 삭제
int size () Map 에 저장된 key-value 쌍의 개수 반환
Collection values () Map 에 저장된 모든 value 객체 반환

## Map.Entry 인터페이스

  • Map 인터페이스의 내부 인터페이스 (inner interface)
  • Map 에 저장되는 key-value 쌍을 다루기 위해 내부적으로 Entry 인터페이스 정의
메서드 설명
boolean equals (Object o) 동일한 Entry 인지 비교
Object getKey () Entry 의 key 객체 반환
Object getValue () Entry 의 value 객체 반환
int hashCode () Entry 의 해시코드 반환
Object setValue (Object value) Entry 의 value 객체를 지정된 객체로 변경

 

 

반응형
반응형

# 배열 (array)

  • 정의 : '같은 타입' 의 여러 변수를 '하나의 묶음' 으로 다루는 것.
  • 인덱스 (index) : 배열의 '요소(저장공간)' 마다 붙여진 '일련번호' , 인덱스 범위는 '0부터 배열길이-1' 까지.
  • 배열의 길이 : 배열의 '요소(저장공간)의 개수' 를 의미. (int 범위의 양의 정수(0포함) 이어야 함)
  • 배열은 한 번 선언되고 나면 길이를 변경할 수 없다.

## 배열 선언방법

방법 1)
타입[] 변수이름;


방법 2)
타입 변수이름[];


다차원 배열)
타입[][] 변수이름;
타입 변수이름[][];
타입[] 변수이름[];

## 배열 생성방법

타입[] 변수이름;			// 배열 선언 (= 배열을 다루기 위한 '참조 변수' 선언)
변수이름 = new 타입[길이]	// 배열 생성 (실제 저장공간 생성)


다차원 배열)
타입[][] 변수이름 = new 타입[길이][길이];

## 배열의 길이 확인방법

배열이름.length		// 배열이름.length 는 상수로 읽기만 가능 (변경 불가)

## 배열의 길이 변경방법

  1. 더 큰 배열을 새로 생성
  2. 기존 배열의 내용을 새로운 배열에 복사

## 배열 복사방법

  • 방법1) for 문을 이용한 배열 복사.
int[] arr = new int[5];			// 기존 배열

int[] tmp = new int[arr.length*2];	// 기존 배열을 저장할 새 배열(기존 배열의 2배 길이)

for (int i = 0; i < arr.length; i++)
	tmp[i] = arr[i];		// arr[i] 값을 tmp[i] 에 저장.
    
arr = tmp;				// 참조변수 arr이 tmp를 가리키게 함.
  • 방법2) System.arraycopy() 를 이용한 배열 복사. (간단하고 빠르게 복사가능, 효율적)
System.arraycopy(arr, 0, tmp, 0, arr.length);

=>
arr[0] 에서 tmp[0] 으로 arr.length 개의 데이터를 복사.
반응형

'프로그래밍 > 자바, JDBC' 카테고리의 다른 글

컬렉션 프레임웍  (0) 2023.02.21
switch 문의 제약조건  (0) 2023.02.19
연산자와 피 연산자  (0) 2021.09.27
형 변환(캐스팅, casting)  (0) 2021.09.27
자바에서 자주 발생하는 에러와 해결방법  (0) 2021.09.23
반응형

# switch 문의 제약조건

  • switch 문의 조건식 결과는 반드시 정수 또는 문자열 이어야 한다.
  • case 문의 값은 정수 상수만 가능하다. (중복되지 않아야 함)
int num, result;
final int ONE = 1;

swith (result) {
	case '1':		// 문자 리터럴(정수 상수 49와 동일)
	case ONE:		// 정수 상수
	case "YES":		// 문자열 리터럴(JDK 1.7 부터 허용)
	case num:		// 에러발생 -> 변수 불가.
	case 1.0:		// 에러발생 -> 실수 불가.
	...
}
반응형
반응형

# 연산자와 피 연산자

## 연산자 (operator)

  • 연산을 수행하는 기호 ( +, -, *, / 등 )
  • 연산을 수행하기 위해서는 반드시 연산의 대상(=피 연산자)이 있어야 함
  • 연산자의 경우 피 연산자로 연산을 수행하고, 항상! 결과 값을 반환한다.

## 피 연산자 (operand)

  • 연산자의 작업 대상 ( 변수, 상수, 리터럴, 수식 )

 

반응형

+ Recent posts