Collection : 데이터를 수집하기 위한 집합
Framework : 틀, 구조
Collection Framework :
데이터를 수집하여 저장
하기 위해 사용할 수 있도록 정의해 놓은 클래스 집합
배열
길이 가변
> 방의 개수를 마음대로 늘리고 줄이는게 가능[ 배열은 크기를 한번 설정하면 바뀔수가 없는데 어떻게 길이가 가변이지❓ ]
x 2
해서 새로운 배열을 만듦[ 컬렉션은 왜 사용 하는가❓ ]
- List :
순차적
, 데이터의중복을 허용 O
- ArrayList
- Stack
- Queue
- LinkedList
Vector(legacy)
- Set :
비순차적
, 데이터의중복을 허용 X
- HashSet
- TreeSet
- Map :
(key, value)
의 piar으로 이루어진 데이터의 집합.비순차적, 키는 중복 X, 값은 중복을 허용 O
- HashMap
- TreeMap
HashTable(legacy)Properties(legacy)
ArrayList<T> list = new ArrayList<T>();
index
사용해서 element(요소)
에 접근list.add("바나나");
list.add("딸기");
list.add("사과");
list.add("포도");
list.add("파인애플");
list.add(2, "망고");
list.set(2, "파인애플");
list.size()
list.get(0)
list.get(list.size() - 1) // 마지막 요소
처음 만나는 요소
를 삭제list.remove(2);
list.remove("파인애플");
list.clear();
list.indexOf("사과")
list.contains("사과")
list.isEmpty()
list.size() == 0
길이
로 선택해해결방법
: ArrayList의 초기 길이를 지정하면 됨stack.push("빨강");
stack.push("파랑");
stack.push("노랑");
stack.size()
stack.pop()
stack.isEmpty()
list.size() == 0
stack.peek()
queue.add("빨강");
queue.add("파랑");
queue.add("노랑");
queue.size()
queue.poll()
queue.isEmpty()
list.size() == 0
queue.peek()
queue.clear();
set.add("사과");
set.add("바나나");
set.add("딸기");
set.size()
set.remove();
Iterator<String> iter = set.iterator();
[ 예제 ]
import java.util.HashSet;
import java.util.Iterator;
public class Ex02 {
public static void main(String[] args) {
HashSet<Integer> hs = new HashSet();
//Generic(제네릭)
//hs.add("hello");
hs.add(10); // new Integer(10) auto-boxing
hs.add(20);
hs.add(30);
hs.add(20);
// 데이터를 꺼내기
Iterator<Integer> it = hs.iterator(); // 반복자
while(it.hasNext()) { // 항목이 있는지 확인
System.out.println(it.next()); // 요소를 하나씩 가져옴 / 출력 결과의 순서는 의미 없다.
}
System.out.println();
System.out.println(hs.size());
System.out.println(hs.isEmpty());
System.out.println(hs.remove(30));
System.out.println(hs.contains(30));
System.out.println(hs.size());
System.out.println();
it = hs.iterator(); // 반복자
while(it.hasNext()) { // 커서가 이미 끝에 있기 때문에 출력 X > 반복자를 다시 생성하면 출력 O
System.out.println(it.next());
}
}
}
map.put("국어", 100);
map.put("영어", 90);
map.put("수학", 80);
map.size()
map.get()
map.put()
map.containsKey()
map.containsValue()
map.remove();
map.clear();
[ 예제 ]
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class Ex03 {
public static void main(String[] args) {
// key -> value 매핑
HashMap<Integer, Info> hm = new HashMap();
//hm.put("hello", 100);
//hm.put(10, "test");
hm.put(1, new Info("홍길동", 20));
//System.out.println(hm.get(key));
System.out.println("[value 값]");
System.out.println(hm.get(10));
//System.out.println(hm.get("hello"));
System.out.println(hm.get(1));
System.out.println(hm.get(3213));
System.out.println();
System.out.println("[key 값]");
Set<Integer> keys = hm.keySet();
Iterator<Integer> it = keys.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
System.out.println();
System.out.println("[key 값]");
for(Integer o : keys) {
System.out.println(o);
}
System.out.println();
System.out.println("[value 값]");
Collection<Info> values = hm.values();
for(Info o : values) {
System.out.println(o);
}
System.out.println();
System.out.println("[key:vlaue 값]");
it = keys.iterator();
while(it.hasNext()) {
Integer key = it.next();
Info value = hm.get(key);
System.out.println(key + ":" + value);
}
}
}
[ 출력값 ]
[value 값]
null
Info@48cf768c
null
[key 값]
1
[key 값]
1
[value 값]
Info@48cf768c
[key:vlaue 값]
1:Info@48cf768c