제네릭 프로그래밍(generic programming)-미완성

2020. 3. 16. 13:04자바 Java/자바 공부 java study

반응형

왜 제네릭을 사용해야 하는가?

제네릭 타입을 이용함으로써 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있다.

제네릭은 클래스와 인터페이스, 메소드를 정의할 때 타입(type)을 파라미터(parameter)로 사용할 수 있도록 한다.

 

 

제네릭(Generic)은 코드블럭 내부에서 쓸 자료형을 외부에서 지정하는 기법을 뜻한다. 여러가지 자료형을 허용하고 싶을 때 Object로 선언해버리면 깔끔하지만, 그렇게하면 원하지 않는 자료형이 입력되었을 때의 오류를 컴파일 시점에 잡아낼 수 없다.

 

장점1. 컴파일 시 강한 타입 체크를 할 수 있다.

  • 실행시 타입 에러가 나는 것보다 컴파일 시에 미리 타입을 강하게 체크해서 에러를 사전에 방지

장점2. 타입 변환(castring)을 제거한다.

  • 비제네릭 코드는 불필요하게 타입 변환을 하기 때문에 프로그램 성능에 악영향을 미친다.

제네릭 타입(class, interface)

제네릭 타입은 타입을 파라미터로 가지는 클래스와 인터페이스를 말한다.

클래스 또는 인터페이스 이름 뒤에 "<>"부호가 붙고, 사이에 타입 파라미터가 위치한다.

 

 

 

 

일반적인 코드를 작성하고 이 코드를 다양한 타입의 객체에 대하여 재사용 하는 프로그래밍 기법 

 

제네릭은 컬렉션 라이브러리에 많이 사용 

 

기존의 방법

일반적인 객체를 처리하려면 object 참조 변수를 사용 

Object 참조 변수는 어떤 객체이던지 참조 할 수 있다. 

 

 

Car.java

 

-->   Car1 c1=new Car();

 Object c2=new Car();  이렇게도 만들수 있다는 의미이다. 

 

 

 

<T> 는 제네릭을 이용했다는 의미이다. 

T에는 타입이 들어올 것이다. 

 

 

 

컬렉션

 

자료구조로는 리스트, 스택, 큐, 집합, 해쉬테이블 등이 있다. 

 

리스트: 순서가 있는 데이터들의 집합 (인덱스) 

스택: 순서있는 데이터들의 집합을 LI,FO(방식으로 관리하는 자료 구조) 

LI,FO(last in first out) 

큐: 순서가 있는 데이터들의 집합을 FI,FO방식으로 관리하는 자료구조 

FI,FO(first in, first out) 

set: 순서가 없는 데이터들의 집합 (중복 없음) 

 

 

 

 

키랑 밸류로 이루어져 있다. 

 

 

 

 

 

 

 

list 인터페이스 

 

 

arraylist  : 데이터가 삽입, 삭제 될때마다 새로운 배열 생성 -> 잦은 탐색의 사용에 유리

linkedlist : 데이터가 삽입, 삭제될때 해당 칸만 추가/삭제하고 위치만 기억 -> 잦은 수정의 사용에 유리  

 

링크드인리스트는  한개가 두칸으로 나눠져 있고 

한 칸에는 값 다른 칸에는 다음으로 연결될 주소값이 들어가 있다. 

 

 값 주소

 

 

 

 

hashmap 은  hash 와 map 이 합쳐진 것. 

hash 방식으로 처리할 거다 라는 의미 

 

반응형