(자바)컬렉션과 제네릭 요점 정리
2021. 12. 20. 16:56ㆍ자바 (Java)
컬렉션과 제네릭 개념
- 컬렉션은 1)자료 구조가 구현된 클래스 모임
2)요소들의 리스트나 집합을 관리하는 자료 구조, 크기를 자동 조절하므로 배열과 달리 요소의 개수에 신경쓸 필요없음
3)요소의 추가, 삭제, 검색 등을 쉽게 할 수 있다. (HashMap, ArrayList, Vector 등)
SET | 저장 순서 없음, 중복 저장 불가, Hashset |
List | 순서있는 가변 크기 자료구조, 저장 순서 있음,중복 저장 가능- ArrayList, Vector, |
Map | (키값) 쌍으로 짱하는 가변크기 자료 구조, 키를 이용해서 값을 얻는 형태 |
- 제네릭은 일반화시킨 타입의 매개 변수를 이용하여 클래스, 인터페이스, 메소드를 일반화시키는 기법
- 일반화시킨 타입에 구체적인 타입을 지정하여 특정 타입으로만 이용할 수 있다.=컬력션은 구체적인 타입을 지정하여 사용한다.
Set<Integer> integerSet= new HashSet<Integer>();
- 컬렉션은 JDK1.5 버전 이후 제네릭 기법으로 만들어졌다.
- 컬렉션의 요소로는 오직 객체만 사용된다.
- int, char, double등의 기본 타입을 캘럭션의 요소로 삽입하려면 Wrapper 클래스를 이용하여 기본 타입을 객체로 만들어 사용해야 한다.
- JDK1.5부터는 자동 박싱, 언박싱이 지원되어 기본 타입을 컬렉션에 바로 삽입하고 추출할 수 있다.
integerSet.add(10);//오토박싱
integerSet.add(Integer.valueOf(10)); //박싱
제네럴 컬렉션 활용
- Vector[E]는 배열을 가변 크기로 다룰 수 있게 한 벡터 컬렉션, 객체의 삽입 , 삭제 , 이동이 편리하고 인덱스 번호로 원소에 접근
- ArrayList[E] 배열을 가변 크기로 다를 수 있게 하는 컬렉션, Vector[E]와 거의 유사
- HashMap<k, v>은 키와 값의 쌍을 하나의 원소로 다루는 해시맵 컬렉션, 인덱스로는 검색 불가.
HashMap<String Integer> h=new HashMap<String, Integer>();
- Iterator<E>는 Collection<E>인터페이스를 구현하는 컬렉션의 원소를 순차적으로 검색할 수 있는 컬렉션
- Collection<E>를 구현한 모든 컬렉션에 iterator() 메소드를 호출하면 Iterator객체를 리턴함.
Vector<Integer> v=new Vector<integer>();
Iterator<integer> it = v.iterator();
제네릭 만들기
- 제네릭 클래스나 인터페이스는 클래스나 인터페이스 이름 다음에 일반화된 타입 매개 변수를 <>사이에 추가한다.
- 제네릭 타입에 Integer나 String등의 구체적인 타입을 대입하면, 특정 타입만 다루는 컬레셕 객체가 생성된다.
제네릭스와 오브젝트의 차이
제네릭스(Generics) | 오브젝트(Objects) |
예를 들어 Map이란 타입에 숫자를 넣었을 때 | |
처음부터 숫자가 저장되도록 제네릭 타입을 설정하면 반드시 숫자만 저장되어있다고 단정할 수 있기 때문에 형변환할 필요가 없음 |
오브젝트 타입은 뭐든 담을 수 있기 때문에 수를 저장할 때 Object타입으로 저장하면 컴퓨터가 컴파일하면서 read할 때 숫자로 형변환해야합니다. |
컬렉션은 객체만 저장 가능. 기본 자료형 값(int, double 등등)은 저장 불가능한데 컬렉션은 모두 제네릭으로 구현 |
'자바 (Java)' 카테고리의 다른 글
(자바) 오버로딩 vs 오버라이딩 (2) | 2021.12.26 |
---|---|
(자바) instance(인스턴스), static(스테틱), 메소드 처리 방식 (0) | 2021.12.22 |
자바(java) 패키지 요점 정리 (1) | 2021.12.19 |
자바(java) 상속 요점 정리 (0) | 2021.12.16 |
객체 지향과 자바, 자바 클래스 만들기 요약! (0) | 2021.12.09 |