JAVA

▶︎컬렉션◀︎

chojdsj 2023. 5. 14. 22:27
728x90
컬렉션(Collection)

 

- 컬렉션은 자바에서 제공하는 자료구조를 담당하는 프레임워크 

 

- 추가,삭제,정렬 등의 기능처리가 간단하게 해결되어 자료구조적 알고리즘을 구현할 필요가 없음 

 

- java.util 패키지에 포함되며, 인터페이스를 통해 정형화된 방법으로 다양한 컬렉션 클래스 이용 가능 

 

- 컬렉션의 장점 

 

1) 저장하는 크기의 제약이 없다. 

2) 추가,삭제,정렬 등의 기능처리가 간단하게 해결된다. 

3) 여러 타입의 데이터가 저장 가능하다. 

    ** 객체만 저장할 수 있기 때문에 필요에 따라 기본 자료형을 저장해야 하는 경우 Wrapper 클래스 사용 **

 

 

 

- 컬렉션의 주요 인터페이스 

 

 

 

 

 

List

 

- 자료들을 순차적으로 나열한 자료구조로 인덱스로 관리되며, 중복해서 객체 저장 가능.

 

- 구현 클래스로 ArrayList와 Vector, LinkedList가 있음 

 

 

 

 

 

** ArrayList **

 

- List의 후손으로 초기 저장 용량은 10으로 자동 설정되며 따로 지정도 가능 

 

- 저장 용량을 초과한 객체들이 들어오면 자동으로 늘어나며 고정도 가능 

 

- Vector : List의 후손, ArrayList와 동등하지만 동기화를 제공한다는 점이 ArrayList와 차이점. List객체들 중에서 가장 성능이 안좋음

 

 

** LinkedList **

 

- List의 후손으로, 인접 참조를 링크해 체인처럼 관리

 

- 특정 인덱스에서 객체를 제거하거나 추가하게 되면 바로 앞/뒤 링크만 변경하면 되기 때문에 객체 삭제와 삽입이 빈번하게 일어나는 곳에서는 ArrayList 보다 성능이 좋음 

 

 

- size() : List의 길이를 가져오는 메소드, 배열명.length; 와 같은 역할

 

- is.empty() : List가 비어있는지 확인하는 메소드

 

- List.set(int index, Student e) : List 의 i 번째 요소를 전달 받은 e로 변경 

 

- List.remove(int index) : 리스트에서 index 번째 요소를 제거 , List는 중간에 비어있는 인덱스가 없게 하기 위해서  remove() 동작 시 뒤쪽 요소를 한 칸씩 당겨온다. 

 

 

Set

 

- 순서를 유지하지 않음(== 인덱스 없음)

 

- 중복을 호용하지 않는다.(null 도 중복이 안됨, 1개만 저장가능) 

 

 

 

- Set 이 중복을 확인하는 방법 : 객체가 가지고 있는 필드값이 모두 같으면 중복으로 판단. 이 때 필드 값이 모두 같은지 비교하기 위해서 

                                                 객체에 "equals()" 가 반드시 오버라이딩 되어있어야 한다.

 

 

 

- add( ) : 데이터 추가

 

 

- size() : 저장된 데이터의 개수 반환 

 

- remove( ) : Set에 저장된 객체 중 매개변수 e와 필드값이 같은 객체를 제거. Hash라는 단어가 포함된 Set이면 hashCode()도 같아야함 

 

 

 

 

 

 

 

HashSet

 

 

- HashSet () : 중복 없이 데이터를 저장(Set)하고 데이터 검색이 빠름(Hash)

 

- Set 의 대표적인 자식 클래스 

 

- 사용조건

1) 저장되는 객체에 equals() 오버라이딩 필수

2) 저장되는 객체에 hashCode() 오버라이딩 필수 

 

** Hash 라는 단어가 붙은 컬렉션은 반드시 저장되는 객체에 equals(), hashCode() 를 오버라이딩 해야한다. 

 

 

 

** LinkedHashSet **

 

- HashSet과 거의 동일하지만 Set에 추가되는 순서를 유지한다는 점이 다름 

 

 

 

 

Iterator(반복자)

 

 

- 컬렉션에서 제공하는 컬렉션 객체 반복 접근자 

 

- 컬렉션에 저장된 데이터를 임의로 하나씩 반복적으로 꺼내는 역할 

 

 

---->> set.iteraror() : Set을 Iterator 가 하나식 꺼내갈수 있는 모양으로 변환 

 

 

- hasNext(), next()

 

 

 

Wrapper 클래스 

 

 

- 기본자료형 -> 객체로 포장하는 클래스 

 

- 컬렉션에 기본자료형 값을 저장할 때 사용. 기본자료형에 없던 추가 기능, 값을 이용하고 싶을 때 사용 

 

- Wrapper 클래스 종류 

 

int -> Integer

double -> Double

Boolean, Byte, Short, Long, Float, Character

 

 

---->>> Integer 와 Double에 쳐진 선들은 삭제선으로 deprecated, 해당 구문은 삭제될 예정이다라는 뜻이다. 

 

 

- parsing : 데이터의 형식을 변환 

 

 

 

- AutoBoxing / AutoUnboxing

 

-- >> 자료형 int 100을 Integer가 자동 포장해줌으로서 AutoBoxing이 일어나고 있다. 

 

 

 

--->> Integer + Integer > int + int (자동포장해제) == AutoUnboxing

 

 

 

Map

 

 

- 키(key) 와 값(value)으로 구성되어 있으며 키와 값은 모두 객체이다. 

 

- 키는 중복저장을 허용하지 않고(Set방식), 값은 중복 저장 가능(List방식)

 

- 키가 중복되는 경우, 기존에 있는 키에 해당하는 값을 덮어 씌움 

 

 

- .put()

 

 

 

- keySet() : Map 에서 key만 모아두면 Set의 특징을 가진다. 이를 활용할수 있도록 Map에서 keySet() 메소드를 제공해준다.(key만 모아서 Set으로 반환)

 

 

HashMap

 

 

- 키 객체는 hashCode() 와 equals() 를 재정의해 동등 객체가 될 조건을 정해야 한다.

 

- 키 타입은 hashCode와 equals()메소드가 재정의 되어있는 String타입을 주로 사용한다. 

 

 

 

 

'JAVA' 카테고리의 다른 글

Optional 객체  (0) 2023.11.21
▶︎입출력◀︎  (0) 2023.05.16
▶︎예외◀︎  (0) 2023.05.14
▶︎인터페이스◀︎  (0) 2023.05.10
▶︎다형성◀︎  (0) 2023.05.10