컬렉션 :
* 자료구조에 대한 기능을 제공하는 기본 클래스
자료 구조란 데이터를 메모리에서 구조적으로 처리하는 방법론이다
컬렉션 프레임워크 :
자료구조 및 알고리즘을 구현해 놓은 일종의 라이브러리이다
제네릭 기반으로 구현이 되어 있다
배열의 문제점 :
1. 한 번 크기를 지정하면 변경할 수 없다
- 공간 크기가 부족하면 에러가 발생 → 할당 시 넉넉한 크기로 할당하게 됨 (메모리 낭비)
- 필요에 따라 공간을 늘리거나 줄일 수 없음
2. 배열에 기록된 데이터에 대한 중간 위치의 추가, 삭제가 불편하다.
- 추가, 삭제할 데이터부터 마지막 기록된 데이터까지 하나씩 뒤로 밀어내고 추가해야 함 (복잡한 알고리즘)
3. 한 타입의 데이터만 저장 가능하다.
컬렉션 장점 :
1.저장하는 크기의 제약이 없다.
2. 추가, 삭제, 정렬 등의 기능 처리가 간단하게 해결된다.
-자료를 구조적으로 처리하는 자료구조가 내장되어 있어 알고리즘 구현이 필요 없다
3.여러 타입의 데이터가 저장 가능하다.
-객체만 저장할 수 있기 때문에 필요에 따라 기본 자료형을 저장해야 하는 경우
Wrapper 클래스를 사용한다
List<E> 인터페이스
ArrayList<E> 배열 기반 자료구조, 배열을 이용하여 인스턴스 저장한다
배열 기반 자료구조이지만 공간의 확보 및 확장은 ArrayList 인스턴스가 스스로 처리한다.
ArrayList 장점 : 저장된 인스턴스의 참조가 빠르다
단점 : 저장 공간을 늘리는 과정에서 시간이 비교적 많이 소요된다
: 인스턴스의 삭제 과정에서 많은 연산이 필요할 수 있다. 따라서 느릴 수 있다
LinkedList<E> 리스트 기반 자료구조, 리스트를 구성하여 인스턴스 저장한다
- 장점 : 저장 공간을 늘리는 과정이 간단하다
: 저장된 인스턴스의 삭제 과정이 단순하다
- 단점 : 저장된 인스턴스의 참조 과정이 배열에 비해 복잡하다.
set 특징 :
- 중복 허용 안됨
- 순서가 없다
해시(Hash) 알고리즘 : 특정 기준에 따라 데이터를 분류하는 방식(알고리즘)
HashSet :
* 중복 데이터 판단 : equals, hashCode 메소드
* [1] hashCode : 기준이 되는 값(데이터)를 정의
* [2] equals : hashCode 같이 같을 경우 동일 데이터 판단 로직 정의
set : 데이터 조회 방법 ->
[1] Iterator (반복자) 사용
- Iterator 객체 생성 : set_참조변수.iterator();
- 데이터 유/무 판단 : iterator_참조변수.hasNext();
- 데이터 조회 : iterator_참조변수.next();
* [2] 향상된 for문 (for - each)
* for(Set에 저장된 데이터 타입(자료형) 변수명 : Set_참조변수명) {
* // 변수명을 사용하여 데이터에 접근
* }
* Object
* - equals() : 두 객체의 주소값을 비교하여 일치하면 true. 일치하지 않으면 false 반환
* - hashCode() : 해당 객체의 주소값을 가지고 10진수 형태로 만들어 반환
hSet1.add("기다운님 안녕하세요");
hSet1.add(new String("기다운님 안녕하세요")); // 생성자로 생성
hSet1.add(new String("여러분"));
hSet1.add(new String("힘내요"));
hSet1.add(new String("여러분"));
HashSet 공간에는 객체가 추가될 때마다 동일 객체인지 비교하여 추가함
- > 동일 객체 판단 기준 : hashCode 결과가 일치하고, equlas 메소드 비교 시 true일 때
'Java' 카테고리의 다른 글
자바 복습하기 _ 1 (0) | 2024.07.11 |
---|---|
자바 변수부터 콜랙션까지 내용 정리 (0) | 2024.07.10 |
자바 입출력 완전 이해하기 (0) | 2024.07.07 |
클래스, 상속 (0) | 2024.07.06 |
KH 교육과정 제네릭 (0) | 2024.07.04 |