공식문서에 Deprecated 로 명시된 부분은 더이상 지원하지 않으니 사용하지 않는 것이 좋다라는 의미 입니다.
Calendar 클래스
Collection 프레임워크
자료구조 : 자료를 저장할 수 있는 구조
hasNext() : 다음에 가져올 값이 있으면 True, 없으면 False를 반환한다.
next() : 매개변수 혹은 iterator가 되는 타입으로 다음으로 가져올 값을 반환한다.
데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 하는 방법 이다.
객체의 타입을 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자(클라이어트)에 의해 지정되는 것을 의미한다.
즉 필요에 의해 객체의 타입을 지정할 수 있도록 하는 일반 (Generic)화 하는 것 이다.
public class Box<E> {
private E obj;
public void setObj(E obj) {
this.obj = obj;
}
public E getObj() {
return obj;
}
}
클래스 이름 뒤에 <E>가 Generic을 적용한 것이다.
Generic을 이용한 Box<E> 클래스를 사용하는 BoxExam 클래스
public class BoxExam {
publi static void main(String[] args) {
Box<Object> box = new Box<>();
box.setObj(new Object());
Object obj = box.getObj();
Box<String> box2 = new Box<>();
box2.setObj("hello");
String str = box2.getObj();
System.out.println(str);
Box<Integer> box3 = new Box<>();
box3.setObj(1);
int value = (int)box3.getObj();
System.out.println(value);
}
}
예제 : ArrayList<E>, HashSet<E>
TreeSet은 Binary Search Tree라는 자료구조의 형태로 데이터를 저장하는 Collection 클래스 입니다.
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class SetExam {
public static void main(String[] args) {
Set<String> set1 = new HashSet<>();
boolean flag1 = set1.add("kim");
boolean flag2 = set1.add("lee");
boolean flag3 = set1.add("kim"); // 중복된 값을 추가하여 보입니다.
System.out.println(set1.size());
//저장된 크기를 출력합니다.
//3개를 저장하였지만, 이미 같은 값이 있었기 때문에 2개가 출력
System.out.println(flag1); //true
System.out.println(flag2); //true
System.out.println(flag3); //false
Iterator<String> iter = set1.iterator();
while (iter.hasNext()) { // 꺼낼 것이 있다면 true 리턴.
String str = iter.next(); // next()메소드는 하나를 꺼낸다. 하나를 꺼내면 자동으로 다음것을 참조한다.
System.out.println(str);
}
}
}
import java.util.ArrayList;
import java.util.List;
public class ListExam {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
// list에 3개의 문자열을 저장합니다.
list.add("kim");
list.add("lee");
list.add("kim"); // 중복된 값을 추가하여 보입니다.
System.out.println(list.size());
//list에 저장된 자료의 수를 출력 (중복을 허용하므로 3 출력)
for(int i = 0; i < list.size(); i++){
String str = list.get(i);
System.out.println(str);
}
}
}
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapExam {
public static void main(String[] args) {
// Key, Value가 모두 String 타입인 HashMap인스턴스를 만듭니다.
Map<String, String> map = new HashMap<>();
// key와 value값을 put으로 저장합니다.
map.put("001", "kim");
map.put("002", "lee");
map.put("003", "choi");
// 같은 key가 2개 있을 수 없습니다. 첫번째로 저장했던 001, kim은 001, kang으로 바뀐다.
map.put("001", "kang");
// map에 저장된 자료의 수를 추력합니다. 3이 출력됩니다.
System.out.println(map.size());
// 키가 001, 002, 003인 값을 꺼내 출력합니다.
System.out.println(map.get("001"));
System.out.println(map.get("002"));
System.out.println(map.get("003"));
// map에 저장된 모든 key들을 Set자료구조로 꺼냅니다.
Set<String> keys = map.keySet();
// Set자료구조에 있는 모든 key를 꺼내기 위하여 Iterator를 구합니다.
Iterator<String> iter = keys.iterator();
while (iter.hasNext()) {
// key를 꺼냅니다.
String key = iter.next();
// key에 해당하는 value를 꺼냅니다.
String value = map.get(key);
// key와 value를 출력합니다.
System.out.println(key + " : " + value);
}
}
}