8. 컬렉션
1) 컬렉션
- 컬렉션 객체는 여러 원소들을 담을 수 있는 자료구조를 뜻한다.
- 배열과의 차이점 : 정적 메모리 할당이 아닌 동적 메모리 할당. à 공간이 필요한만큼 계속 추가할 수 있음.
2) Collection 인터페이스
(1) Set : 순서를 유지하지 않는 데이터의 집합. 데이터의 중복 허용하지 않음.
- HashSet
가장 빠른 임의 접근 속도. 순서 예측할 수 없음. 중복을 자동으로 제거해줌.
- TreeSet
정렬방법 지정 가능.
(2) List : 순서가 있는 데이터의 집합. 데이터 중복 허용.
- LinkedList
양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 데이터의 위치정보만 수정하면 되기에 유용함.
스택, 큐, 양방향 큐 등을 만들기 위한 용도로 쓰임.
- Vector
과거에 대용량 처리를 위해 사용했으며, 내부에서 자동으로 동기화처리가 일어나 비교적 성능이 좋지 않고 무거워 잘 쓰이지 않음.
- ArrayList
단방향 포인터 구조로 각 데이터에 대한 인덱스를 가지고 있어 조회 기능에 성능이 뛰어남.
(3) Map : 키(Key), 값(Value)의 쌍으로 이루어진 데이터 집합. 순서 유지 안됨. 키(Key) 중복 허용 안됨. 값(Value) 중복 허용함. Key : Set 방식, Value : List 방식으로 저장됨.
- HashTable
HashMap 보다는 느리지만 동기화 지원. null불가
- HashMap
중복과 순서가 허용되지 않으며 null값이 올 수 있다.
- TreeMap
정렬된 순서대로 키(Key)와 값(Value)을 저장하여 검색이 빠름
3) 컬렉션의 장점
- 저장하는 크기의 제약이 없다.
- 추가, 삭제, 정렬 등의 기능처리가 간단하다.
- 여러 타입을 저장할 수 있다. 객체만 저장되기 때문에 기본 자료형은 Wrapper클래스로 저장됨.
4) ArrayList
- add( ) : 데이터 추가. Object 타입으로 들어감. 기본 자료형 추가시 내부적으로 AutoBoxing에 의해 WrapperClass로 변형되어 객체로 들어감.
- get(index) : ArrayList 값 추출
- remove(index) : 원하는 인덱스의 값 삭제
- add(인덱스, 추가할 값) : 원하는 인덱스 중간에 값 추가
- set(인덱스, 변경할 값) : 원하는 인덱스 값 수정
- indexOf(찾을 값) : 찾고자 하는 값의 인덱스 확인
- contains(찾을 값) : 찾을 값 포함했는지 확인 (반환값 boolean)
5) 제네릭스<>
- 제네릭스 사용하는 이유 : 명시된 타입의 객체만 저장하도록 제한을 두기 위해.
컬렉션에 저장된 객체를 꺼내서 사용할 때 매번 형변환하는 절차를 없애기 위해.
6) Comparator : Compare( )
- 원하는 정렬 기준대로 설정 (사용자 정의)
- 정렬 기준을 여러 개 할 수 있음.
- 제네릭이 적용된 인터페이스로 제네릭을 적용하고 메소드를 오버라이딩하면 따로 메소드 안에서 다운캐스팅이 필요 없다.
7) Comparable : CompareTo( )
- 클래스의 기본 정렬 기준을 설정
- 정렬 기준 하나만 사용 가능. 각 클래스마다 규칙 하나씩.
- int 타입을 반환. 파라미터로 비교 대상이 되는 객체가 들어오게 된다.
- A.compareTo(B) 일 때, A<B 이면 음수 리턴, A=B 이면 0 리턴, A>B이면 양수 리턴.
8) Properties
- 해당 프로그램이 기본적으로 가지고 있는 정보들을 .properties 확장자 문서로 저장해놓으면
Key Value 모두 문자열이기 때문에 개발자가 아닌 일반인 관리자가 해당 문서를 다루기 쉽다.
- Map 컬렉션에서 String타입으로 쓰임.
- xml 파일로 저장할 수 있는 메소드를 따로 제공.
xml 파일은 프로그래밍 언어 간에 호환이 쉽다.
즉, 자바에서 작업하고 xml파일로 저장하면 C언어에서 불러들여 사용할 수 있다.
'Java' 카테고리의 다른 글
자바 요약 정리 - 예외 처리 (0) | 2021.07.12 |
---|---|
자바 요약 정리 - 이차원배열 (0) | 2021.07.12 |
자바 요약 정리 - 객체배열 (0) | 2021.07.12 |
자바 요약 정리 - 배열 (0) | 2021.07.08 |
자바 요약 정리 - API (0) | 2021.07.06 |
자바 요약 정리 - 다형성 (0) | 2021.07.06 |
자바 요약 정리 - 상속 (0) | 2021.07.06 |
자바 요약 정리 - 객체 (0) | 2021.07.06 |