컬렉션 프레임워크(collection framework)란
다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미.
즉, 데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것.
컬렌션 프레임워크는 자바 인터페이스를 사용하여 구현된다.
컬렉션 프레임워크 주요 인터페이스
List 인터페이스
Map 인터페이스
주요 인터페이스의 간략한 특징
인터페이스 | 설명 | 구현 클래스 |
---|---|---|
List<E> | 순서가 있는 데이터의 집합으로, 데이터의 중복을 허용함. | Vector, ArrayList, LinkedList, Stack, Queue |
Map<K, V> | 키와 값의 한 쌍으로 이루어지는 데이터의 집합으로, 순서가 없음. 이때 키는 중복을 허용하지 않지만, 값은 중복될 수 있음. | HashMap, TreeMap, Hashtable, Properties |
List 컬렉션 클래스
List 인터페이스를 구현한 모든 List 컬렉션 클래스 특징
저장 순서가 유지.
같은 요소의 중복 저장을 허용.
대표적인 List 컬렉션 클래스
1. ArrayList<E>
2. LinkedList<E>
3. Vector<E>
4. Stack<E>
예제
ArrayList<Integer> arrList = new ArrayList<Integer>();
// add() 메소드를 이용한 요소의 저장
arrList.add(40);
arrList.add(20);
arrList.add(30);
arrList.add(10);
// for 문과 get() 메소드를 이용한 요소의 출력
for (int i = 0; i < arrList.size(); i++) {
System.out.print(arrList.get(i) + " "); --> 40 20 30 10
}
// remove() 메소드를 이용한 요소의 제거
arrList.remove(1); --> 40 30 10
// Enhanced for 문과 get() 메소드를 이용한 요소의 출력
for (int e : arrList) {
System.out.print(e + " "); --> 10 30 40
}
// Collections.sort() 메소드를 이용한 요소의 정렬
Collections.sort(arrList); --> 10 30 40
// iterator() 메소드와 get() 메소드를 이용한 요소의 출력
Iterator<Integer> iter = arrList.iterator();
while (iter.hasNext()) {
System.out.print(iter.next() + " "); --> 10 30 40
}
// set() 메소드를 이용한 요소의 변경
arrList.set(0, 20); //0번방에 20 set
for (int e : arrList) {
System.out.print(e + " "); --> 20 30 40
}
// size() 메소드를 이용한 요소의 총 개수
System.out.println("리스트의크기 : " + arrList.size()); --> 리스트의크기: 3
Map 컬렉션 클래스
Map 컬렉션 클래스들은 키와 값을 하나의 쌍으로 저장하는 방식(key-value)을 사용
키(key)란 실질적인 값(value)을 찾기 위한 naming 역할.
순서를 유지하지 않고 값은 중복될수 있지만 키는 중복을 허용하지 않고 유일해야한다.
대표적인 Map 컬렉션 클래스
1. HashMap<K, V>
2. Hashtable<K, V>
3. TreeMap<K, V>
HashMap<K, V> 클래스
HashMap 클래스는 Map 컬렉션 클래스에서 가장 많이 사용되는 클래스 중 하나
JDK 1.2부터 제공된 HashMap 클래스는 해시 알고리즘(hash algorithm)을 사용하여 검색 속도가 매우 빠름.
예제
HashMap<String, Integer> hm = new HashMap<String, Integer>();
// put() 메소드를 이용한 요소의 저장 ( list 의 add역할)
hm.put("삼십", 30);
hm.put("십", 10);
hm.put("사십", 40);
hm.put("이십", 20);
// Enhanced for 문과 get() 메소드를 이용한 요소의 출력
System.out.println("맵에 저장된 키들의 집합 : " + hm.keySet());
for (String key : hm.keySet()) {
System.out.println(String.format("키 : %s, 값 : %s", key, hm.get(key)));
}
-->
맵에 저장된 키들의 집합 : [이십, 삼십, 사십, 십]
키 : 이십, 값 : 20
키 : 삼십, 값 : 30
키 : 사십, 값 : 40
키 : 십, 값 : 10
// remove() 메소드를 이용한 요소의 제거
hm.remove("사십");
// iterator() 메소드와 get() 메소드를 이용한 요소의 출력
Iterator<String> keys = hm.keySet().iterator();
while (keys.hasNext()) {
String key = keys.next();
System.out.println(String.format("키 : %s, 값 : %s", key, hm.get(key)));
}
-->
키 : 이십, 값 : 20
키 : 삼십, 값 : 30
키 : 십, 값 : 10
// replace() 메소드를 이용한 요소의 수정 (list의 set)
hm.replace("이십", 200);
for (String key : hm.keySet()) {
System.out.println(String.format("키 : %s, 값 : %s", key, hm.get(key)));
}
-->
키 : 이십, 값 : 200
키 : 삼십, 값 : 30
키 : 십, 값 : 10
// size() 메소드를 이용한 요소의 총 개수
System.out.println("맵의 크기 : " + hm.size());
-->
맵의 크기 : 3
'Back-end > JAVA,Spring' 카테고리의 다른 글
J2EE란? 자바2 엔터프라이즈 에디션 (0) | 2018.10.22 |
---|---|
[JAVA Spring] 첨부파일 구현하기. MulripartResolver. (0) | 2018.10.21 |
제네릭 Generic 이란? (0) | 2018.10.18 |
[JAVA]Spring properties 설정하기 (0) | 2018.09.17 |
[Java]자주 사용하는 String class의 생성자와 메서드 및 사용법. (0) | 2018.09.06 |