*컬렉션이란? : 자바에서 자료구조를 담당하는 프레임워크
->java.util 패키지에 포함되며 인터페이스를 통해 추가, 삭제, 정렬 기능들이 간단히 해결됨
* 배열 vs 컬렉션
배열 | 컬렉션 |
한 번 크기 정하면 변경 불가 | 저장 크기 제약 없다 |
중간 위치 추가 삭제 불편 | 추가, 삭제, 정렬 용이 |
한 타입 데이터만 저장 가능 | 여러 타입 가능 |
*컬렉션의 주요 인터페이스
- List : 순서를 유지, 중복 저장 가능
- Set : 순서가 없고 중복 저장 불가
- Map : 키와 값의 쌍으로 이루어지며 키는 중복 저장이 안된다.
* List : 순차적 자료구조로 인덱스로 관리됨
ex) ArrayList, LinkedList, Vector
<주요 메서드>
- add : 객체 추가
- addAll : 컬렉션 타입 객체를 리스트에 추가
- set : 해당 인덱스의 객체를 바꿈
- contains : 해당 객체 저장 여부
- get : 해당 인덱스 객체 리턴
- isEmpty : 컬렉션이 비어있는지 조사
- clear : 모든 객체 삭제
- size : 객체 수 리턴
- remove : 해당 객체 삭제
*ArrayList :
-초기 용량은 10으로 설정되며 따로 지정 가능
-저장 용량을 초과한 객체들이 들어오면 자동으로 늘어나며 고정도 가능
-동기화를 제공하지 않음
*LinkedList :
-앞뒤 링크를 동해 체인처럼 관리됨
-객체 삽입과 삭제가 빈번하면 ArrayList보다 성능이 좋음
*Set : 저장 순서가 유지되지 않고 중복을 허용하지 않음(null도 중복 x)
ex) HashSet,TreeSet , LinkedHashSet
<주요 메서드>
- add
- addAll
- contains
- itereator : 저장된 객체를 한번씩 가져오는 반복자 리턴(List, Set 만 가능)
- Set은 인덱스가 없으므로 호출시 iterator 사용으로 가능하다
- 향상된 for문으로도 가능하다
- Map의 경우 Set/List화 시켜 iterator 사용
- size
- clear
- remove
*HashSet :
->Set에 객체를 저장할 떄 hash함수를 사용하여 처리 속도가 빠름
*Map : 키와 값으로 구성되어
키: 중복저장 허용하지 않는 Set 방식(중복되면 값을 덮어씌운다)
값: 중복저장 허용
ex) HashMap, HashTable, LinkedHashMap, Properties , TreeMap
<주요 메서드>
- put : 주어진 키와 값을 추가, 저장이 되면 값을 리턴
- entrySet : 모든 키와 값의 쌍을 Set에 담아 출력
- get : 주어진 키의 값을 리턴
- isEmpty : 비어있는지 여부
- keySet : 모든 키를 Set 객체에 담아 리턴
- size
- values : 모든 값을 컬렉션에 담아 리턴
- clear
- remove
- containsKey : 키 존재 여부
- containsValue : 값 존재 여부
* Hash 와 hashCode
-> 해쉬 저장 방식은 객체 저장을 해쉬값으로 하고 해쉬값을 통해 진짜 주소로 빠르게 가는 방식
-> 그러므로 equals() 메서드를 오버라이딩 하는 경우
-> 값이 동일할 때 hash 또한 동일해 지도록 재정의 해야 한다.
-> 미정의시 값은 동일하게 판단하는데 주소는 다르게 판단되어 중복이 허용되는 문제가 발생한다.
'개발자로 업그레이드 되자 > JAVA' 카테고리의 다른 글
JAVA의 IO (0) | 2021.10.24 |
---|---|
Java의 기본 개념들을 정리 (0) | 2021.09.12 |
JAVA 문자열로 된 수식을 입력 받아 계산하는 계산기 (1) | 2021.08.15 |
JAVA 별 만들기 코드 (0) | 2021.08.15 |