'IT/JAVA'에 해당되는 글 21건

 JCF (Java Collection FrameWork - List, Set , Map )

- 자료구조

- Collection 계열( List , Set )  , Map계열( Map ) 로 제공

- JDK 1.5에서 부터 Generic(제네릭), autoboxing(오토박싱) , unboxing(언박싱) 지원

 

 Generic 

 Autoboxing 

 Unboxing 

 List<E> : 다이아몬드연산자 사용

 

 

 <E> : 제네릭

 - E에 데이터형을 넣는데 기본

   데이터형을 사용 할수 없다.

 - 기본형대신 WrapperClass사용

 - JDK 1.5에서부터 추가된기능

   ( 입력데이터 형의 제한 )

 - JDK1.4까지는 모든 데이터입력

   ( 입력된 데이터를 꺼내서 사용할

   때 문제가 발생 )

문법)

 1)인터페이스명<데이터형> 객체명

    = new 생성자<데이터형>();

 

 2) 클래스명<데이터형> 객체명

    = new 생성자<데이터형>();

 

 - JDK 1.7부터는 생성자뒤에

   데이터형이 생략가능하다.

  JFC에 기본형 데이터형을 추가하면

  기본형데이터형에 대응되는 WrapperClass

  로 객체가 생성되어 입력되는것

 

 List<Integer> l=new ArrayList<Integer>();

 int i = 0 ;

 l.add( i ); --> l.add(new Integer(i));

 JDK 1.5부터 지원된다.

 기본형 데이터형을 추가 했을 때 입력되는

 WrapperClass에서 원래의 데이터형으로

 반환하는 것

 

 

 

 

 

 

 

 Collection 계열

 - 일차원 배열 형태

 - 가변길이형 배열

 - 데이터의 추가와 삭제가 쉽다

 - JDK1.4 까지는 객체만  저장

   JDK 1.5에서부터는 모든

   값을 저장(오토박싱)한다.

 List 

 - 중복값 저장 가능

 - 검색의 기능이 있다.

 - 데이터가 순차적으로 들어간다.

 - Interface라 객체화가 안됨

    (is a 관계 객채화필요)

 

 

 메소드

 1. 값추가 : add(값);

 2. 크기(데이터 존재하는 방의 갯수)

    : size();

 3. 값얻기 : get(int index) : E

               get(int index,E e)  : void

 4. 삭제 : remove(int index) : E

             remove(E e) : boolean

 5. 모두삭제 : clear() : void

 6. 배열로 보내기 :

    toArray(T[] a):Object[]

 

 ArrayList 

 - vertor의 속도를 향상

 - 동기화 되어 있지않다.  (MultiThread에서 동시 접근 가능)

 - 데이터 추가가 순차적으로 발생

 - FIFO( First In First Out ), 선입선출( Queue )

 Vertor

 - 동기화 되어 있다.

   (MultiThread에서 동시 접근 불가)

 - 데이터 추가가 순차적으로 발생

 - FIFO,  선입선출( Queue )

   ( First In First Out )

 Stack

 - is a 관계로 객체화

   않는다.

 - LIFO( Last In First Out )

 - 마지막에 들어간 값이

   먼저나온다.

 - stack은 OverFlow가

   발생한다.

 - 부모의 method는 사용

   하지않는다.

 

 1. 생성)

 Stack<E> stk =

 new Stack<>();

 

 2.값 추가)

 stk.push(E item) : E

 

 3.값 출력)

 stk.pop() : E

 ( 꺼낸 값은 사라진다. )

 

 4.비엇니?)

 stk.empty() : boolean

 

 LinkedList

 - 데이터 추가가 뒤가 아니라 중간 부분에서 빈번하게

   일어 날때 사용

 

사용법)

 * IS A 관계

 List < String > l = new ArrayList<String>();

(List < String > l = new Vertor<String>();

(List < String > l = new LinkedList<String>();

(

 * 자식 클래스로 만들때

 ArrayList<String> l = new ArrayList<String>();

 Vertor<String> l = new Vertor<String>();

 LinkedList<String> l = new LinkedList<String>();

 

 ex)

 1.선언)

 List <String> list = null;

 2.생성)

 list = new ArrayList<String>();

 3.추가)

 list.add("안녕");

 list.add("클래스");

 list.add("반장");

 3.배열내보내기 )

 String[] str = new String[list.size()];

 list.toArray(str);

 3.방의 값얻기 )

 for(int i =0 ;  i < list.size() ; i ++){

    System.out.println(list.get(i));

   //( i = 0 : 안녕 , i = 1 : 클래스 , i = 2 : 반장 )

 }

 

 4.방 삭제)

  list.remove(1); // "클래스" 삭제

  list.remove("안녕"); // 중복값이있다면 중복값의 최소인덱스

                           // 의 값만 제거한다.

 Set 

 - 중복값을 저장 불가

 - 검색의 기능이 없다.

 - 데이터가 순차적으로

   입력되지 않는다.

 - 조회기능이없어서 Iterator 사용

 

 HashSet 

 1.선언 + 생성)

 Set<E> set = new Set<E>();

 

 2.값 추가) add(E e) : boolean

 값이 순차적으로 입력되지 않는다.

 기본형을 입력하면 autoBoxing이 된다.

 

 3.방의크기) size():int

 

 4.삭제 ) remove(Object o) : boolean

 인덱스로는 삭제 할 수 없다.

 

 5.모두 삭제) clear() : void

 

 6. 배열로 복사 ) toArray(E e): E

 

 7. 값 얻기)

 검색기능이 없음으로 제어권을 Iteractor에게 이양한다.

 Iteractor<Set> ita = set.iteractor(); 

 

 while(ita.hasNext()){//방존재?

        ita.next();// 값 얻고 다음방으로 포인터를 이동

 }

 

 Map 계열

 - 2차원 배열로 되어있다.

 - 가변길이형

 - 키와 값의 쌍으로 되어있다.

 - KOV ( Key Of Value )

 - 키는 중복될 수 없다.

 - 값은 중복될 수 있다.

 - 입력되는 키가 이전 키와

   같다면 값을 덮어쓴다.

 - 입력되는 순서대로 추가되지

   않는다.

 

 Hashtable

 생성시 11개 행이 자동생성된다.

 사용법)

 1) 선언

  Map<K,V> map = null;

 2) 생성

  map = new HashTalbe<K,V>();

 3) 값 할당

  map.put(키,값);

 4) 행의 크기:입력된데이터까지

  map.size():int

 5) 키가 존재하는지

  map.key:boolean

 6) 모든 키로 얻기

  map.keySet():Set

 7) 삭제

   map.remove(K): V

   map.remove(K,V): Boolean

 8) 검색

   map.get(K)

   키가 없으면 null 리턴

 

 공통점 : - 전체레코드의 약 75 %데이터가 채워져있을때

             가장빠른 검색을 하게된다.

            - 생성자에 행의 크기를 설정해주는게 좋다.

 

 

 

  HashMap

 생성시 16개 행이 자동생성된다.

 사용법)

 1) 선언

  Map<K,V> map = null;

 2) 생성

  map = new HashMap<K,V>();

 3) 값 할당

  map.put(키,값):V

 4) 행의 크기:입력된데이터까지

  map.size();

 5) 키가 존재하는지

  map.key;

 6) 모든 키로 얻기

  map.keySet():Set

 7) 삭제

   map.remove(K): V

   map.remove(K,V): Boolean

 8) 검색

   map.get(K):V

   키가 없으면 null 리턴

 

 

'IT > JAVA' 카테고리의 다른 글

[JAVA] Pattern (Design Pattern)  (0) 2018.04.16
[JAVA] 유용한 클래스들  (0) 2018.04.10
[JAVA] class의 종류  (0) 2018.04.06
[JAVA] 배열(Array)  (0) 2018.04.03
[JAVA] Call by Value & Call by Reference  (0) 2018.03.30
블로그 이미지

이든Kim

,