Java는 강력한 데이터 구조를 제공하여 다양한 형태의 데이터를 효과적으로 관리할 수 있다.
그중 가장 많이 사용되는 두 가지 데이터 구조는 Map과 List이다.
이 블로그에서는 자바에서 Data Map 과 Data List 를 사용하는 방법과 그 활용 예제를 살펴보겠다.
1. 데이터 맵 (Map)
Map 인터페이스는 키(Key)와 값(value) 쌍을 저장하는 객체이다.
각각의 키는 유일하며, 하나의 키는 하나의 값에 매핑된다.
자바에서 흔히 사용하는 Map 구현 클래스는 HashMap, TreeMap, LinkedHashMap 등이 있다.
1 - 1 HashMap
HashMap은 가장 많이 사용되는 Map 구현 클래스 중 하나로, 해시 테이블을 기반으로 한다.
키와 값의 null을 허용하며, 동기화되지 않는다.
import java.util.HashMap;
import java.util.Map;
public class HashMapExample {
public static void main(String[] args) {
Map<String, Integer> hashMap = new HashMap<>();
hashMap.put("Apple", 1);
hashMap.put("Banana", 2);
hashMap.put("Orange", 3);
System.out.println("HashMap: " + hashMap);
int value = hashMap.get("Apple");
System.out.println("Value for key 'Apple': " + value);
}
}
1 - 2 TreeMap
TreeMap 은 정렬된 순서로 키를 저장하는 Map 구현 클래스이다. 기본적으로 키의 자연 순서(오름차순)로 ,
Comparator를 통해 정렬 순서를 정의할 수도 있다.
import java.util.TreeMap;
import java.util.Map;
public class TreeMapExample {
public static void main(String[] args) {
Map<String, Integer> treeMap = new TreeMap<>();
treeMap.put("Apple", 1);
treeMap.put("Banana", 2);
treeMap.put("Orange", 3);
System.out.println("TreeMap: " + treeMap);
}
}
1 - 3 LinkedHashMap
LinkedHashMap은 삽입 순서를 유지하는 Map 구현 클래스이다.
따라서 데이터의 입력 순서를 유지해야 하는 경우 유용하다.
import java.util.LinkedHashMap;
import java.util.Map;
public class LinkedHashMapExample {
public static void main(String[] args) {
Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("Apple", 1);
linkedHashMap.put("Banana", 2);
linkedHashMap.put("Orange", 3);
System.out.println("LinkedHashMap: " + linkedHashMap);
}
}
2 데이터 리스트 (List)
List 인터페이스는 순서가 있는 컬렉션을 나타내며, 중복 요소를 허용한다. 자바에서
흔히 사용하는 List구현 클래스는 ArrayList, LinkedList 등이 있다.
2 - 1 ArrayList
ArrayList는 크기 변경이 가능한 배열로, 요소의 인덱스에 의해 빠르게 접근할 수 있다.
동기화 되지 않으며, 일반적으로 요소의 추가 및 접근이 빠르다.
import java.util.ArrayList;
import java.util.List;
public class ArrayListExample {
public static void main(String[] args) {
List<String> arrayList = new ArrayList<>();
arrayList.add("Apple");
arrayList.add("Banana");
arrayList.add("Orange");
System.out.println("ArrayList: " + arrayList);
String element = arrayList.get(1);
System.out.println("Element at index 1: " + element);
}
}
2 - 2 LinkedList
LinkedList는 이중 연결 리스트로, 요소의 삽입 및 삭제가 용이하다.
특히, 리스트 중간에 요소를 추가하거나 제거할 때 유리하다.
import java.util.LinkedList;
import java.util.List;
public class LinkedListExample {
public static void main(String[] args) {
List<String> linkedList = new LinkedList<>();
linkedList.add("Apple");
linkedList.add("Banana");
linkedList.add("Orange");
System.out.println("LinkedList: " + linkedList);
linkedList.remove(1);
System.out.println("LinkedList after removal: " + linkedList);
}
}
3 데이터맵(Map) 과 데이터리스트(List)를 활용 예제
데이터맵과 데이터리스트를 함께 사용하여 보다 복잡한 데이터 구조를 만들 수 있다.
예를 들어, 각 과일의 이름과 그에 대한 속성들을 저장하는 구조를 생각해보자.
import java.util.HashMap;
import java.util.Map;
import java.util.List;
import java.util.ArrayList;
public class MapListExample {
public static void main(String[] args) {
Map<String, List<String>> fruitAttributes = new HashMap<>();
List<String> appleAttributes = new ArrayList<>();
appleAttributes.add("Red");
appleAttributes.add("Sweet");
appleAttributes.add("Crunchy");
List<String> bananaAttributes = new ArrayList<>();
bananaAttributes.add("Yellow");
bananaAttributes.add("Sweet");
bananaAttributes.add("Soft");
fruitAttributes.put("Apple", appleAttributes);
fruitAttributes.put("Banana", bananaAttributes);
System.out.println("Fruit Attributes: " + fruitAttributes);
}
}
자바의 Map과 List는 데이터 관리를 위한 강력한 도구입니다.
이 두 가지를 잘 활용하면 복잡한 데이터 구조도 쉽게 관리 할 수 있습니다.
'JAVA > Java기초' 카테고리의 다른 글
Jackson 라이브러리에서 @JsonProperty(index)를 사용하여 JSON 배열 순서 제어하기 (0) | 2024.06.14 |
---|---|
자바에서 SelectList와 SelectOne 이해하기 (0) | 2024.05.28 |
배열 ( Array) (0) | 2023.09.24 |
프로그래밍 3대 요소 (0) | 2023.07.29 |
JVM과 자바의 구동방식 (0) | 2023.07.24 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!