일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- useEffect
- db
- JPA
- @Query
- Polylang
- 구글알고리즘
- 리액트오류
- 구글애널리틱스
- GA4
- @Controller
- HttpSession
- 워드프레스
- set
- GET
- addallattributes()
- Login
- SEO
- mergeattributes()
- Thymeleaf
- 구글
- ChatGPT
- post
- @Repository
- @Entity
- router
- firebase
- 플러그인
- 데이터베이스
- 인텔리제이
- linkedhastset
- Today
- Total
개발천재
[JAVA] 데이터 관리 도우미 컬렉션(Collection) 본문
컬렉션(Collection)
컬렉션(Collection)은 데이터의 집합을 관리하는 Java의 표준 라이브러리이다. 여러 데이터를 하나의 객체로 묶어서 다룰 수 있도록 도와주는 인터페이스와 클래스를 제공하며, 자주 사용하는 컬렉션 클래스에는 List, Set, Map 등이 있다. 컬렉션은 다양한 형태로 데이터를 저장하고, 탐색하고, 수정하는 데 유용하다.
컬렉션의 주요 특징
컬렉션은 데이터를 저장하는 다양한 방법을 제공한다. 예를 들어, 배열과 비슷하게 데이터를 저장할 수 있으며, 중복을 허용하지 않거나 순서를 유지하는 등 특성에 맞는 컬렉션을 선택할 수 있다.
동적 크기를 조정할 수 있다. 일반적으로 배열은 크기가 고정되어 있지만, 컬렉션은 동적 크기 조정이 가능하다. 즉, 데이터를 추가하거나 제거할 때마다 크기가 자동으로 조정된다.
유연하게 사용할 수 있다. 데이터 처리 방식에 따라 적절한 컬렉션을 선택하여 사용할 수 있다. 예를 들어, 순서가 중요한 경우 List, 중복이 허용되지 않는 경우 Set, 키-값 쌍으로 데이터를 처리하려면 Map을 사용할 수 있다.
컬렉션 인터페이스
Collection
Collection은 모든 컬렉션 객체의 최상위 인터페이스이다. List, Set 등 다른 컬렉션 인터페이스들이 이 인터페이스를 상속받는다. Collection은 List, Set, Queue와 같은 구체적인 컬렉션 타입들이 공통으로 가지고 있어야 할 메서드를 정의한 기본 틀을 제공한다. List, Set, Queue는 그 틀을 상속받아 자신들의 특성에 맞게 기능을 확장하고, 추가적인 메서드를 정의한다.
List와 Set은 Collection 인터페이스를 상속받은 주요 서브 인터페이스이다.
List: 순서가 중요한 컬렉션 (중복 허용)
Set: 순서가 중요하지 않거나 중복을 허용하지 않는 컬렉션
주요 구현 클래스
List 인터페이스
List는 순서가 중요하고 중복을 허용하는 데이터 구조이다. 인덱스를 사용하여 접근할 수 있다. List 인터페이스에는 ArrayList와 LinkedList 가 있다.
ArrayList는 동적 배열을 이용하여 데이터를 저장한다. 데이터가 삽입되거나 삭제될 때 크기가 자동으로 조정된다.
LinkedList는 링크드 리스트로 데이터를 저장한다. 중간에 데이터를 추가하거나 삭제할 때 성능이 좋다.
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
System.out.println(list); // [Apple, Banana]
Set 인터페이스
Set은 순서가 중요하지 않으며 중복을 허용하지 않는 데이터 구조이다. Set 인터페이스에는 HashSet과 TreeSet이 있다.
HashSet은 중복을 허용하지 않는 컬렉션이다. 데이터의 순서를 보장하지 않는다.
TreeSet은 데이터를 정렬된 순서로 저장하는 Set이다.
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // 중복 데이터는 추가되지 않음
System.out.println(set); // [Apple, Banana]
Map 인터페이스
Map은 키와 값의 쌍으로 데이터를 저장하는 데이터 구조이다. 키는 중복을 허용하지 않으며, 각 키는 한 개의 값과만 매핑된다. Map에는 HashMap과 TreeMap이 있다.
HashMap은 Key-Value 형태로 데이터를 저장하는 가장 일반적인 구현체이고, TreeMap은 데이터를 키를 기준으로 정렬된 순서로 저장한다.
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 10);
map.put("Banana", 20);
System.out.println(map); // {Apple=10, Banana=20}
컬렉션 사용 예시
List 사용 예시
import java.util.List;
import java.util.ArrayList;
public class ListExample {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// 순서대로 출력
for (String fruit : fruits) {
System.out.println(fruit);
}
}
}
Set 사용 예시
import java.util.Set;
import java.util.HashSet;
public class SetExample {
public static void main(String[] args) {
Set<String> fruits = new HashSet<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Apple"); // 중복되므로 추가되지 않음
// 순서가 보장되지 않음
for (String fruit : fruits) {
System.out.println(fruit);
}
}
}
Map 사용 예시
import java.util.Map;
import java.util.HashMap;
public class MapExample {
public static void main(String[] args) {
Map<String, Integer> fruitPrices = new HashMap<>();
fruitPrices.put("Apple", 100);
fruitPrices.put("Banana", 50);
fruitPrices.put("Orange", 80);
// 키-값 쌍으로 출력
for (Map.Entry<String, Integer> entry : fruitPrices.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
컬렉션의 장단점
컬렉션은 데이터를 추가하거나 삭제할 때 자동으로 크기가 조정되며, 다양한 데이터 구조를 제공하여 문제에 맞는 적절한 컬렉션을 선택할 수 있는 유연성을 갖추고 있다. 또한, 데이터 검색, 정렬, 비교 등 기본적인 알고리즘을 지원하여 개발자가 편리하게 사용할 수 있다.
단, 컬렉션 클래스는 종류에 따라 성능 차이가 있을 수 있으며, 경우에 따라 배열보다 성능이 떨어질 수 있다. 또한, 컬렉션은 동적으로 크기가 조정되기 때문에 배열보다 더 많은 메모리를 사용할 수 있다.
'개발 준비 > JAVA' 카테고리의 다른 글
[JAVA] Set 제대로 활용하기, 로또 번호 만들기 (1) | 2025.02.21 |
---|---|
[JAVA] List<>와 ArrayList (1) | 2025.02.20 |
[JAVA] Optional 개념과 주요 메서드 (2) | 2025.02.12 |
[JAVA] 열거형 클래스 Enum(enumeration type) (0) | 2025.02.11 |
[JAVA] 자바와 SQL 연결하기, JDBC (0) | 2024.12.30 |