ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JDBC] 컬렉션 프레임워크 ( Collection Framework)
    program_language 및 궁금한것/DB연동 JDBC 2019. 6. 14. 18:58

    컬렉션 프레임워크 Collection Framework

    List, Set, Map 같은 라이브러리 - 객체를 수집해 저장하는 역할을 하기 위해 사용방법을 미리 정해놓음

     

    상속관계

    List - ArrayList , Vector, LinkedList(속도빠름)

    Set - HashSet, TreeSet

    Map - HashMap, Hashtable, TreeMap, Properties

     

    각 특징들

    List - 자동 인덱스 부여 ( 데이터 1개 저장시 1개의 index가 필요) 

            ex) 10000개의 데이터중 0인덱스 삭제시 뒤의 9999개의 데이터는 인덱스를 다시 지정해야 한다.

           LinkedList - 데이터 1개 저장시 1개의 index, 앞의 데이터주소, 뒤의 데이터 주소 필요

                           그래서 데이터의 수가 많을때엔 LinkedList가 유리하다.

                            ex) 해당 값의 앞뒤 주소도 저장하기 때문에 삭제시 인덱스 재정의가 쉽다.

                                 많은 데이터 중 삭제할때 성능이 아주 좋다.

    Set - 순서가 없고 중복을 허용하지 않음 ex. 주머니속의 공을 생각해요. 유니크한 데이터를 저장하고 싶다면 set을 강추

           SortedSet - 값이 정렬된 Set이다. null입력불가

    Map - 키(Unique)와 값의 쌍으로 저장. 순서가 중요치 않다.

             key는 보통 문자열, value는 Object를 사용한다.

             SortedMap - 키가 정렬된 Map이다.

     

    Java Collection Framwork(JCF)

    - 참조데이터(주소)를 담는 바구니

    - 데이터 구조를 정의하기 위해 인터페이스를 사용한다.

      (Collection, List, Set, Map)

    - 배열보다 더 편리하게 객체를 다룰 수 있습니다.

    - java.util.* 안에 존재한다.

     

    ArrayList와 Vector는 사용문법이 같다.

    차이점은 ArrayList처리속도가 빠르다. 왜냐 Vector에는 동기화 코드가 추가 되어있기 때문이지

     

    ArrayList LinkedList 속도 테스트!

    ArrayList<Person> list10= new ArrayList<Person>();
    		LinkedList<Person> list20= new LinkedList<Person>();
    		
    		long start= System.currentTimeMillis();
    		for (int i = 0; i < 100000; i++) {
    			list10.add(new Person(1,"sirings",13,"학생"));
    		}
    		long end= System.currentTimeMillis();
    		System.out.println("ArrayLit데이터 입력시간 (순차):"+(end-start));
    		
    		System.out.println("----------------------------");
    		start= System.currentTimeMillis();
    		for (int i = 0; i < 100000; i++) {
    			list20.add(new Person(1,"sirings",13,"학생"));
    		}
    		end= System.currentTimeMillis();
    		System.out.println("LinkedList데이터 입력시간 (순차):"+(end-start));
            
            //////////////////////////////////////////////////////////////////////
            //데이터 중간삽입
            ArrayList<Person> list30 = new ArrayList<Person>();
    		LinkedList<Person> list40 = new LinkedList<Person>();
    
    		start = System.currentTimeMillis();
    		for (int i = 0; i < 100000; i++) {
    			// 0인덱스 
    			list30.add(0, new Person(1, "sirings", 13, "학생")); // 0인덱스에 값넣기
    		}
    		end = System.currentTimeMillis();
    		System.out.println("ArrayLit데이터 입력시간 (중간+ (end - start));
    		
    		
    		start = System.currentTimeMillis();
    		for (int i = 0; i < 100000; i++) {
    			// 0인덱스 
    			list40.add(0, new Person(1, "sirings", 13, "학생")); // 0인덱스에 값넣기
    		}
    		end = System.currentTimeMillis();
    		System.out.println("LinkedList데이터 입력시간 (중간):" + (end - start));

    결과.

    ArrayLit데이터 입력시간 (순차):13 <-- 조회에 유리
    LinkedList데이터 입력시간 (순차):26
    ----------------------------
    ArrayLit데이터 입력시간 (순차):640
    LinkedList데이터 입력시간 (중간):21  <-- 수정삭제에 유리

    반응형

    'program_language 및 궁금한것 > DB연동 JDBC' 카테고리의 다른 글

    [JDBC] PreparedStatement란?  (0) 2019.06.12
    [JDBC] DAO와 DTO, VO  (0) 2019.06.10
    JDBC 란?  (0) 2019.06.05

    댓글

Designed by Tistory.