Develop/곤부📙

컬렉션 / 제네릭 예습

밀김 2023. 5. 11. 21:27
728x90

 
 
 
 


 
 
 
 
- 컬렉션이란? : 데이터를 수집하고 관리해주는 객체
 
- 컬렉션을 사용하면 데이터 관리를 보다 쉽게 할 수 있다 
 
- add(3) 이런식으로 쓰면 3이 배열에 들어감
 
- 공간이 부족해도 알아서 공간을 늘려준다 
 
- 가변길이배열을 쓰고 싶을때 컬렉션을 쓴다
 
 
 


 
 

 
 -오브젝트는 공통 자료형(범용 자료형)이다




-오브젝트에 값을 담으려면 박싱을 해서 담아야함
(반대로 꺼낼때는 언박싱 이라고 한다)

-int > 기본형 / Integer > 오브젝트형
 
 
 


 

 

 

- objectList() : 형식은 모든 형태를 담을수 있다

 

- 오브젝트 형식을 쓰기 전에는 list.add(3) 정수만 담을수 있었는데 objectList()로 바꾸고 나서는 문자열도 담을수 있게 됨

list.add("hello") 
 
- 하지만 오브젝트(범용자료형)의 단점은 모든 형식을 담을수 있기 때문에 반환받는 형식을 맞춰주기가 힘들다(그래서 일일이 형변환을 해줘야됨)
 

- 그래서 이런 단점을 보완하고자 나온것이 제네릭이다
 
 
 


 

 

 

- 제네릭은 어떤 자료형이든 될수있는 일종의 템플릿 같은것이다

 

- 제네릭을 표현할때는 꺾음괄호를 쓴다 GList<String(자료형 적기)> list = new GList();
 
 - 자료형을 한개이상 표현할수도 있다 GList<string(String,Integer)=""> list = new GList();</string(자료형> 다만, 허용되는 자료형은 int 이런 기본형은 안되고 오브젝트로써의 형식 변환이 가능한 래퍼형식,클래스형식만 가능하다

 

 

 

- class에서 쓸때는 <>안에 키워드??를 적어준다

 

 

 

 

- 앞의 괄호에서 형식명칭을 적어주고 있다면 뒤에는 굳이 안적어줘도 된다

 

 

 

- 키워드를 적어줬으면 반환 하는것들도 키워드를 적고,형변환을 해야한다

package obj;

public class GList<T> {
	private Object[] nums;
	private int current;
	
	public GList() {
		nums = new Object[3];
		current = 0;
		
	}

	public void add(T num) {
		nums[current] = num;
		current++;
	}

	public void clear() {
		current = 0;
	}

	public int size() {
		return current;
	}

	public T get(int index) {
		if(current<=index)
			throw new IndexOutOfBoundsException();
		return (T)nums[index];
	}

}

 

 

 

- 제네릭을 사용하지 않으면 메인 메서드에서 형식 확인을 하고 전부 다 그형식으로 맞췄어야 하는데, 제네릭을 사용하면 

클래스쪽에 적어준 키워드 하나만 갖고 명시해주면 되기 때문에 덜 번거롭게 코드작성을 할수있다?

 

 

 

 

 

 

 

 

 

 

 

 

728x90