11장. java.util 패키지
*10장 innerclass는 쓰임새가 그다지 많지 않아 패스.
* 종류
1. 수동 import 작성
2. 컬렉션 프레임워크(Collection FrameWork) 클래스
cf. 컬렉션 ; 다수의 데이터
프레임워크 ; 표준화된 방법을 제공하는 틀(프로그래밍 기법)
xxxList
- Vector, ArrayList, Stack, LinkedList, Queue 클래스들
xxxSet
xxxMap
배열 ; 정적크기/동일타입 데이터만 장
동적크기/
3. 날짜/시간
- java.util.Date
특징 ; 날짜와 시간 표현
생성자 ;
Date d = new Date(); ==> 현재 시스템
JDK 생성자나 메소드 사용 자제 deprecated(한줄 그어진 것) 경고
JDK 업그레이드 되면서 대체 기능 다른 클래스 포함
Date 삭제 ; 이미 Date를 사용중인 프로그램 위해 남겨졌다.
==> DATE 사용 자제
- java.util.Calendar
특징 ; Date 기능 대부분 포함
abstract class 선언 ; 상속을 받아서만 쓸 수 있다.
객체 생성 불가능하다.
class A{
Calendar now = new Calendar() ==> 오류 발생
}
class A{
Calendar now = Claendar.getInstance() ==> 올바른 사용
}
메소드
static 메소드 ; getInstance 메소드 도움을 받아서 객체 생성
(Calendar 객체, 즉 현재 시스템)
get() ; 4자리 연도 get(Calendar.YEAR);
2자리 시간 get(Calendar.HOUR);
set() ; 날짜 값 변동 set(Calendar.YEAR,2);
- java.text.SimpleDateFormet
특징 ; 숫자 포맷
4. 소수점
- java.text.DecimalFormat
특징 ; 소수점 이하 2자리까지 표현,소수점 이하 값 0이면 표현O,세자리마다 표현
DecimalFormat df = new DecimalFormat("##,###.00");
System.out.println("원주율 : "+Math.PI);
System.out.println("원주율(소수점 2자리) : "+df.format(Math.PI));
System.out.println(df.format(1));
System.out.println(df.format(12345.555));
System.out.println(df.format(12345.00000));
결과>
원주율 : 3.141592653589793
원주율(소수점 2자리) : 3.14
1.00
12,345.56
12,345.00
5. 패턴(Pattern) 클래스
특징 ; "자바/교육장/이공계" .sqlit("/") or .split(".")
* List
특징 ; 순서 있다. 데이터 중복 허용한다. jdk 1.2이전부터 존재
cf. shallow Copy vs Deep Copy
String s1= new String("java"); // 100번지
String s2 = s1; // 100번지
String s3 = new String("java"); // 100번지 - deep Copy
String s4 = (String)(s3.clone()); // 200번지 - Shallow Copy
// 원본은 두고 테스트 해보고 싶은 것
1. Vector
- 특징 ; 동적 크기, 다양한 타입 데이터 저장하면서 데이터 중복과 순서가 있다.
- 생성자
Vector v = new Vector();
==> 10개의 데이터를 저장할 수 있도록 저장공간생성, 모자라면 10개씩 증가/감소
여러가지 참조형 변수(Wrapper class;autoBoxing) 모두 저장 가능하다.
Integer in = 100;
Vector v = new Vector(5);
=> 5개 데이터 저장 공간 생성. 모자라면 5걔씩 자동 증가/감소
Vector v = new Vector(5,2);
=> 5개 데이터 저장 공간 생성. 모자라면 2개씩 자동 증가/감소
- 변수
capacityIncrement; protected자료형이므로 Vector 상속받아 사용한다.
class MyVector extends Vector{
...
capacityIncrement
}
class MyVector {
MyVector m = new MyVector();
m.capacityIncrement; ==> 오류발생한다.
}
- 메소드
저장 메소드
; add("java"), addElment(100), addObject(3.14)
==> 벡터 가장 끝 저장한다.
insertAt("jsp",1)
==> 1번 index (2번째 위치)에 jsp 저장, 원래 2번째 위치에 존재하는 데이터는 2번 index로 이동한다.
수정 메소드 ; set(1,"jsp")
삭제 메소드 ; remove(1)
조회 메소드
- 벡터 저장 데이터 갯수 조회 ; size() --> int
- 벡터 총 크기 조회 ; capacity() --> int
- 벡터 특정 데이터 포함 여부 조회 ; contains("jsp") --> boolean
- 벡터 특정 데이터 위치(순서;index) 조회 ; indexOf("jsp") --> int(0<=~)
- 벡터 특정 위치의 데이터 조회 ; get(1) --> object(정수, 실수, 문자열등..)
- 기타
add(Object)
Object ==> get(index)
String 타입의 데이터만 저장
Vector<String> v = new Vector<String>();
add(String); 다른 타입 데이터일 경우 오류
String ==> get(index) ; 형변환 할 필요 없다.
==> jdk 1.5 (autoboxing; Integer in= 100)
generics(= <E>) ; 한가지 타입 지정. 해당 타입... 설정
--> 형 변환 할 필요 없다는 장점!
Vector<E> ; 벡터 저장 ELEMENT 타입 설정
ArrayList<E>
HashSet<E>
Iterator ; 데이터 저장 못한다. 조회 전용
2. ArrayList
- 메소드
Vector 에서 쓰이는 메소드가 쓰인다.
add(),set(),remove(),size(),get()
capacity()메소드는 없다.
3. HashSet
- 특징 ; 똑같은 데이터가 저장해도 2번째 껏은 무시한다. 중복 제공하지 않는다.
순서 유지 못한다.
- 메소드
Vector, ArrayList 에서 쓰이는 메소드가 쓰인다.
add(),set(),remove(),size(),
get() 메소드는 없다.
조회 메서드 ; iterator
TIP :
iterator ; xxxList, xxxSet, xxxMap 데이터를 복사하여 조회 인터페이스
Iterator 객체 구현 ==> all.iterator();
hasNext() ; 조회 데이터 존재 여부
next() ; 조회
remove() ; 삭제
Iterator it = new Iterator(); ==> 오류 발생한다.
4. HashMap
- 특징 ; key와 value
hash함수 = hash 알고리즘
; 조회 좀 더 빠르게 하기 위해 사용 알고리즘