(자바)컬렉션과 제네릭 요점 정리

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 등등)은 저장 불가능한데 컬렉션은 모두 제네릭으로 구현