
자바에서 제네릭과 컬렉션이라는 목차를 보면 먼저 당황하게 됩니다.
어떤 내용인지 전혀 감을 못 잡기 때문인 것 같아요. 저도 처음에 이 목차를 봤을 때는 어떤 내용일까 궁금했습니다.
처음에 접하게 되면 많이 어렵다고 생각합니다. 제네릭과 컬렉션을 만든 이유와 그 작동 원리를 이해한다면 훨씬 접근하기 쉬울 겁니다.
그래서 오늘은 제네릭과 컬렉션을 코드랑 함께 살펴보겠습니다.


먼저 간단한 IntegerBox와 StringBox를 만들어봤습니다.
이런 간단한 박스가 서로 다른 타입으로 100개 이상이 필요하다면 클래스를 100개 이상 계속 만들어야합니다.
하나 하나 클래스들을 만들려고 한다면 번거롭겠죠?
그러면 모든 클래스의 부모 클래스인 Object 타입으로 변수를 만들어서 코드를 작성하면 되지 않나? 라고 생각할 수 있습니다.
하지만 이 또한 출력할 때 에러가 발생할 수 있습니다.

예를 들어 ObjectBox라는 클래스에 Integer 값을 입력을 했고,
출력을 할 때 타입이 헷갈려(수 많은 코드들이 있다면) String 타입으로 값을 받으려고 할 수도 있습니다(에러발생).
그리고 Integer 타입으로 값을 받으려고 한다면 ObjectBox를 캐스팅을 통해서 값을 넘겨야 합니다.
이런 일들이 발생할 수 있기 때문에 제네릭을 사용하여 타입의 안정성과 코드의 재사용성을 가질 수 있습니다.

제네릭으로 클래스를 만들면 이렇게 됩니다.
타입을 아직 모르는 상태에서 T라는 타입으로 먼저 클래스를 만들게 됩니다.
<T> 여기서 T는 Type의 T입니다.
이외에도

이런식으로 쓰는게 관례입니다.

위 코드처럼 <> 안에 Integer타입을 넣으면 GenericBox 안에 있는 T가 Integer로 바뀌게 됩니다.
그러면 Integer 타입으로 value를 꺼낼 수 있습니다.
밑에 set 메소드에는 문자열이 들어가니까 오류를 발생시키고, String 타입으로 value를 받으려고 할 때도 오류를 발생 시킵니다.
제네릭은 복수 타입 파라미터를 만들 수 있습니다.
보통 Map 컬렉션에서 많이 사용을 합니다. Map<K, V> 이런식으로 사용을 합니다.
Map를 사용할 때는 Map<String, Integer> 이런식으로 사용을 할 수 있겠죠?
이제 컬렉션에 대해서 얘기를 해보려고 합니다!
컬렉션은 자바에서 굉장히 중요한 자료구조 입니다.
크게 List, Set, Map이 있습니다.

이런 구조를 가지고 있습니다.
각 자료구조마다 특징을 가지고 있습니다.
List는 순서를 보장하고 중복을 허용합니다.
Set은 순서를 보장하지 않고 중복을 허용하지 않는 집합 구조입니다.
Map은 Key, value로 이루어져 있으며 Entry로 이를 관리합니다.
다음에는 컬렉션을 더욱더 자세히 살펴보도록 하겠습니다!
'개발 > Java' 카테고리의 다른 글
| 멀티캠퍼스 [현대 이지웰] 외부 파일에 이미지 저장 및 불러오기 (0) | 2025.12.15 |
|---|---|
| 멀티캠퍼스 [현대 이지웰] MVC 패턴 (0) | 2025.08.19 |
| 멀티캠퍼스 [현대 이지웰] Java 상속?, 다형성? 이게 다 뭘까? (2) | 2025.08.11 |
| 멀티캠퍼스 [현대 이지웰] Java 기본 개념 클래스에 대해서 알아보자! (3) | 2025.08.03 |