본문 바로가기

콩's EDUCATION/콩's JAVA

[KITRI] 자바 11장 : Java.util 패키지(컬렉션 프레임워크)

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 알고리즘

; 조회 좀 더 빠르게 하기 위해 사용 알고리즘

 


ch11.zip