728x90
반응형
Java Collection
Java에서 컬렉션(Collection)이란 데이터의 집합, 그룹을 의미한다.
JCF(Java Collections Framework)는 이러한 데이터, 자료구조인 컬렉션과 이를 구현하는 인터페이스를 제공한다.
Collections Framework 주요 인터페이스
인터페이스 | 설명 | 구현 클래스 |
---|---|---|
List<E> |
순서가 있는 데이터의 집합으로, 데이터의 중복을 허용함. | LinkedList Stack Vector ArrayList |
Set<E> |
순서가 없는 데이터의 집합으로, 데이터의 중복을 허용하지 않는다. | HashSet SortedSet |
Map<K,V> |
키와 값의 한쌍으로 이루어지는 데이터의 집합으로 순서가 없고, 키는 중복을 허용하지 않지만, 값은 중복될 수 있다. | HastTable HashMap SortedMap |
이 중 List와 Set 인터페이스는 모두 Collection 인터페이스를 상속받지만,
구조상의 차이로 인해 Map 인터페이스는 별도로 정의된다. 그렇지만 모두 Collcetion으로 분류된다.
Collection 주요 메소드
리턴타입 | 메소드 | 설명 |
---|---|---|
boolean | add(E e) | 요소를 추가한다 |
boolean | addAll(Collection) | 매개 변수로 넘어온 컬렉션의 모든 요소를 추가한다. |
void | clear() | 컬렉션에 있는 모든 데이터를 지운다. |
boolean | contains(Object) | 매개 변수로 넘어온 객체가 해당 컬랙션에 있는지 확인한다. 동일한 값이 존재하면 true를 반환. |
boolean | containsAll(Collect) | 매개 변수로 넘어온 객체들이 해당 컬렉션에 있는지 확인한다. 매개 변수로 넘어온 컬렉션에 있는 요소들과 동일한 값들이 모두 있으면 true를 반환. |
boolean | equals(Object) | 매개 변수로 넘어온 객체와 같은 객체인지 확인한다. |
int | hasCode() | 해시 코드 값을 리턴한다. |
boolean | isEmpty() | 컬렉션이 비어있는지 확인한다. 비어 있으면 true를 반환한다. |
Iterator | iterator() | 데이터를 한 건씩 처리하기 위한 iterator 객체를 리턴한다. |
boolean | remove(Object) | 매개 변수와 동일한 객체를 삭제한다. |
boolean | removeAll(Collection) | 매개 변수로 넘어온 객체들을 해당 컬렉션에서 삭제한다. |
boolean | retainAll(Collection) | 매개 변수로 넘어온 객체들만을 컬렉션에 남겨둔다. |
int | size() | 요소의 개수를 리턴한다. |
Object[] | toArray() | 컬렉션에 있는 데이터들을 배열로 복사한다. |
<T>T[] |
toArray(T[]) | 컬렉션에 있는 데이터들을 지정한 타입의 배열로 복사한다. |
Map 컬렉션
Map 인터페이스는 Collection 인터페이스와 다른 저장 방식을 갖는다.
Map 인터페이스를 구현한 Map 컬렉션 클래스들은 키와 값을 하나의 쌍으로 저장하는 방식(key-value)을 사용한다.
Map 컬렉션 특징과 대표 클래스
- 요소의 저장 순서를 유지하지 않는다.
- 키는 중복을 허용하지 않지만, 값은 중복을 허용한다.
HsahMap<K,V> Hashtable<K,V> TreeMap<K,V>
HashMap<K,V> 클래스는 Map 컬렉션 클래스에서 가장 많이 사용되는 클래스 중 하나이다.
필자는 그렇기에 HashMap<K,V>만을 다룰 것이다.
참고로
Map<String, String> map = new HashMap<>();
map 선언시 이렇게 사용하는 이유는 Map이 인터페이스이기 때문이다.
즉, 인터페이스여서 선언만 가능하며 객체 생성이 불가능하다.
때문에 자식인 HashMap으로 객체를 생성한다.
HashMap<K,V> 예제
import java.util.HashMap;
import java.util.Map;
public class Example{
public static void HashMapExample (String[] arg) {
Map<String, Integer> map = new HashMap<>();
map.put("key1", 100);
map.put("key2", 200);
map.put("key3", 300);
System.out.println(map); // {key1=100, key2=200, key3=300}
System.out.println(map.get("key1")); // 100
System.out.println(map.get("key2")); // 200
System.out.println(map.get("key2")); // 300
if (!map.containsKey("key2")) { // 키가 들어있는지 확인, 있으면 덮어쓰지 않는다.
map.put("key2", 300);
}
System.out.println(map.get("key2")); // 200
System.out.println("모든 Key-Value 조회");
for (String key : map.keySet()) {
System.out.println("{" + key + "," + map.get(key) + "}");
}
/*결과*/
// 모든 Key-Value 조회
// {key1,100}
// {key2,200}
// {key3,300}
// forEach문 사용으로 조회
map.forEach((key, value) ->
{
System.out.println("{" + key + "," + map.get(key) + "}");
}
);
// {key1,100}
// {key2,100}
// {key3,100}
/* replace를 이용하여 수정 */
map.replace("key2", 400);
System.out.println("key2 =" + map.get("key2"));
// 400
/* remove 제거 */
map.remove("key1");
/* 맵의 크기 */
System.out.println("map size = " + map.size());
// 2
}
}
Hash<K,V> 주요 메소드
리턴타입 | 메소드 | 설명 |
---|---|---|
void | clear() | 해당 맵의 모든 매핑을 제거함 |
boolean | containsKey(Object key) | 해당 맵이 전달된 키를 포함하고 있는지 확인 |
boolean | containsValue(Object value) | 해당 맵이 전달된 값에 해당하는 하나 이상의 value를 포함하고 있는지 확인 |
void | get(Object Key) | 해당 맵에서 전달된 키에 대응하는 값을 반환함. 만약 해당 맵이 전달된 키를 포함한 매핑을 포함하고 있지 않으면 null을 반환. |
boolean | isEmpty() | 해당 맵이 비어 있는지를 확인. |
Set |
keySet() | 해당 맵에 포함되어 있는 모든 키로 만들어진 Set객체를 반환. |
void | put(K key, V value) | 해당 맵에 전달된 키에 대응하는 값으로 특정 값을 매핑함. |
void | remove(Object key) | 해당 맵에서 전달된 키에 대응하는 매핑을 제거함. |
boolean | remove(Object key, Object value) | 해당 맵에서 특정 값에 대응하는 키의 매핑을 제거함. |
void | replace(K key, V value) | 해당 맵에서 전달된 키에 대응하는 값을 특정 값으로 대체함. |
boolean | replace(K key, V oldValue, V newValue) | 해당 맵에서 특정 값에 대응하는 전달된 키의 값을 새로운 값으로 대체함. |
int | size() | 해당 맵의 매핑의 총 개수를 반환함. |
728x90
반응형
'1.프로그래밍 > Java' 카테고리의 다른 글
[Spring Boot] 스프링 이메일 전송 사용하기 (SMTP) (0) | 2022.02.07 |
---|---|
[Spring Boot] JSON 과 GSON이란? (0) | 2022.01.07 |
[Spring Boot] Logback 설정 (DB log) - Log4jdbc (2) | 2021.11.29 |
REST API 란? (0) | 2021.11.24 |
[Spring Boot] Thymeleaf 란? 타임리프 문법 정리 (1) | 2021.11.21 |