-
[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