[JAVA] 07. 제너릭과 컬렉션

gogori6565·2022년 10월 12일
0

JAVA

목록 보기
11/11

컬렉션 (Collection)

요소(element) 객체들의 저장소
-객체들의 컨테이너라고도 불리고
-요소의 개수에 따라 크기 자동 조절
-요소의 삽입, 삭제에 따른 요소의 위치 자동 이동

  • 고정 크기의 배열을 다루는 어려움 해소
  • 다양한 객체들의 삽입, 삭제, 검색 등의 관리가 용이

컬렉션과 제너릭

컬렉션은 제너릭(generics) 기법으로 구현, 컬렉션의 요소는 객체만 가능! (int, char, double 등의 기본 타입 사용 불가 - JDK 1.5부터 자동박싱/언박싱으로 기본 타입 값 객체로 자동 변환 가능)


제너릭 (Generics)

특정 타입만 다루지 않고, 여러 종류의 타입으로 변신할 수 있도록 클래스나 메소드를 일반화시키는 기법

C++의 템플릿(template)과 동일

  • <E>, <K>, <V> : 타입 매개 변수 (요소 타입을 일반화한 타입)
  • 제너릭 클래스 예시
    제너릭 스택 : Stack<E>
    • E에 특정 타입으로 구체화
    • 정수만 다루는 스택 Stack<Integer>
    • 문자열만 다루는 스택 Stack<String>


Vector< E >

여러 객체들을 삽입, 삭제, 검색하는 컨테이너 클래스

배열의 길이 제한 극복, 원소의 개수가 넘쳐나면 자동으로 길이 조절

Vector <Integer> v = new Vector<Integer>();
  • import : java.util.Vector
    -<E>에서 E 대신 요소로 사용할 특정 타입으로 구체화

  • 벡터에 삽입 가능한 것 : 객체, NULL

벡터 요소 삽입

v.add(Integer); //Integer 값 맨 뒤 삽입
  1. 맨 뒤에 객체 추가 => v.add(5); //5 삽입

  2. 벡터 중간에 객체 삽입 => v.add(2,100); 두번째 위치에 100 삽입

// 정수 값만 다루는 제네릭 벡터 생성
Vector<Integer> v = new Vector<Integer>(); 
v.add(5); // 5 삽입
v.add(4); // 4 삽입
v.add(-1); // -1 삽입

// 벡터 중간에 삽입하기
v.add(2, 100); // 4와 -1 사이에 정수 100 삽입

백터 요소 삭제

v.remove(idx); //idx 인덱스 내 요소 삭제

임의의 위치에 있는 객체 삭제 가능 : 객체 삭제 후 자동 자리 이동

벡터 요소 검색

v.get(idx);

벡터 주요 메소드


컬렉션을 매개변수로 받는 메소드

public void printVector(Vector <Integer> v){
	...
}

Vector <Integer> v;
printVector(v); //메소드 호출

매개변수에 Vector <Integer> v 작성
호출은 벡터 변수로 (v)


ArrayList< E >

가변 크기 배열을 구현한 클래스

  • import : java.util.ArrayList
    -<E>에서 E 대신 요소로 사용할 특정 타입으로 구체화

  • ArrayList에 삽입 가능한 것 : 객체, NULL;

ArrayList에 객체 삽입

  1. 리스트의 맨 뒤에 객체 추가
  2. 리스트의 중간에 객체 삽입

ArrayList에 객체 삭제

임의의 위치에 있는 객체 삭제 가능

profile
p(´∇`)q

0개의 댓글