티스토리 뷰

데이터 저장을 위한 컬렉션(Collection)과 제네릭(Generics)의 활용


우리가 프로그램에서 데이터를 효율적으로 저장하고 조작하기 위해서는 변수들의 수가 점점 증가하는 문제를 해결해야 하는데요, 예를들어 배열 같은경우에는, 데이터 타입만 저장을 하지만, 크기 조정이 번거로운 치명적인 단점이 있습니다. 이러한 문제를 해결하기 위해서 자바에서는 컬렉션(Collection)과 제네릭(Generics)이 등장하였었죠, 이번 글에서는 컬렉션과 제네릭의 개념과 활용에 대해 알아보겠습니다.

자바(java) 코드


컬렉션(Collection)

컬렉션은 데이터를 저장하기 위한 자료구조로, 배열과 비교했을 때 여러 가지 이점이 있습니다.

데이터가 많아지면, 변수도 많아지죠, 위에서도 언급했지만, 배열은 같은 데이터만 저장해서 단점이 있습니다.

 

컬렉션의 장점을 크게 3가지로 말할 수 있는데요

  • 첫번째로 컬렉션은 크기 지정을 미리 해주지 않아도 됩니다. 데이터가 삽입되거나 삭제될 때 자동으로 크기가 조정됩니다.
  • 두번째로 컬렉션은 다른 데이터 타입의 요소를 저장할 수 있습니다. 정수, 문자열 등 다양한 데이터 타입을 하나의 컬렉션에 저장할 수 있습니다.
  • 세번째, 컬렉션은 데이터의 삽입, 삭제, 조작이 용이합니다.

 

컬렉션(Collection) 코드 예시를 한번 볼까요?

------------------------------------------

import java.util.ArrayList;

public class CollectionExample {
public static void main(String[] args) {
// 문자열을 저장할 ArrayList 생성
ArrayList<String> stringList = new ArrayList<>();

// 데이터 추가
stringList.add("에이");
stringList.add("비");
stringList.add("씨");

// 데이터 출력
for (String fruit : stringList) {
System.out.println(fruit);
}
}
}

------------------------------------------

위 의 출력 결과는

에이

입니다.

 

 


리스트(List), 셋(Set)

리스트(List)와 셋(Set)은 컬렉션의 대표적인 형태입니다.

리스트는 데이터를 순서대로 저장하며, 중복된 데이터를 허용합니다. 데이터를 검색하거나 수정하기 위해서는 전체를 순회해야 합니다. 셋은 중복된 데이터를 허용하지 않으며, 데이터를 검색하기 위해서도 전체를 순회해야 합니다.

리스트(List) 코드 예시를 한번 볼까요?

------------------------------------------

import java.util.ArrayList;
import java.util.List;

public class ListExample {
public static void main(String[] args) {
// 정수를 저장할 List 생성
List<Integer> integerList = new ArrayList<>();
// 데이터 추가
integerList.add(1);
integerList.add(2);
integerList.add(3);

// 데이터 출력
for (int num : integerList) {
System.out.println(num);
}
}
}

------------------------------------------

위 의 출력 결과는

1

2

3

입니다.

 

셋(Set) 코드 예시를 한번 볼까요?

------------------------------------------

import java.util.HashSet;
import java.util.Set;

public class SetExample {
public static void main(String[] args) {
// 정수를 저장할 Set 생성
Set<Integer> integerSet = new HashSet<>();

// 데이터 추가
integerSet.add(10);
integerSet.add(20);
integerSet.add(30);

// 데이터 출력
for (int num : integerSet) {
System.out.println(num);
}
}
}

------------------------------------------

위 의 출력 결과는

동일합니다

1

2

3

입니다.

 

 

맵(Map)

맵(Map)은 키(key)와 값(value)의 쌍으로 데이터를 저장하는 컬렉션입니다. 맵은 키를 통해 값을 빠르게 찾을 수 있으므로 데이터를 검색하는 데 유용합니다.

마찬가지로 예시를 보겠습니다.

------------------------------------------

import java.util.HashMap;
import java.util.Map;

public class MapExample {
public static void main(String[] args) {
// 문자열을 저장할 Map 생성
Map<String, Integer> stringMap = new HashMap<>();

// 데이터 추가
stringMap.put("a", 10);
stringMap.put("b", 5);
stringMap.put("c", 8);

// 데이터 출력
for (String key : stringMap.keySet()) {
int value = stringMap.get(key);
System.out.println(key + ": " + value);
}
}
}

------------------------------------------

출력결과는?

"a: 10"

"b: 5"

"c: 8"

입니다.

 

 

제네릭(Generics)

제네릭은 컬렉션에 저장할 데이터의 타입을 미리 지정해주는 기능입니다. 제네릭을 사용하면 컴파일 시에 에러를 사전에 확인할 수 있으며, 형변환을 할 필요가 없어(엄청난 장점이죠ㅎㅎ) 코드의 안정성을 높일 수 있습니다. 제네릭은 Set, List, Map 등 다양한 컬렉션 계열에서 사용할 수 있습니다.

예시를 보겠습니다.

------------------------------------------

import java.util.ArrayList;
import java.util.List;

public class GenericsExample {
public static void main(String[] args) {
// 문자열을 저장할 제네릭 리스트 생성
List<String> stringList = new ArrayList<>();

// 데이터 추가
stringList.add("Hello");
stringList.add("World");
stringList.add("!");

// 데이터 출력
for (String str : stringList) {
System.out.println(str);
}
}
}
------------------------------------------

출력결과는?

"Hello"

"World"

"!"

 

 

 

마치며

실무에서는 배열 대신 컬렉션을 사용하여 데이터를 저장하고 관리하는 것이 사실 더욱, 훨~씬 편리합니다. 하지만 실정은 배열이 난무하고... 소스가 뒤죽박죽.. 주먹구구식 개발 이 많죠..컬렉션과 제네릭은 데이터 저장과 조작을 효율적으로 처리하기 위한 중요한 개념입니다. 컬렉션은 배열과 비교했을 때 크기 조정이나 다양한 데이터 타입 저장 등의 이념을 제공하여 프로그램 개발을 더욱 효율적으로 할 수 있습니다. 리스트, 셋, 맵 등 다양한 컬렉션을 활용하여 데이터를 저장하고 조작할 수 있으며, 제네릭을 통해 컴파일 시에 타입 에러를 방지하고 형변환을 간편하게 처리할 수 있습니다!


 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함